2016-07-21 4 views
0

ファイル名が長すぎる場合は、このコードを確認します。C#のFilePathとRadUploadのテキストボックス

protected void buttonSubmit_Click(object sender, EventArgs e) 
     { 
      try 
      { 
       if (pomDoc != null) 
       { 
        //load pomContext 
        if (pomContext == null) 
        { 
         InitContext(); 
        } 

        if (RadUpload1.UploadedFiles.Count <= 0) 
        { 
         Session[AppConstants.ERROR_MESSAGE] = ErrorsList.GetErrorMessage(
          ErrorsList.ERR_P_DATE_FILE_VALID); 
        } 
        else 
        { 
         { 
          foreach (UploadedFile validFile in RadUpload1.UploadedFiles) 
          { 
           pomDoc = (IDbContextualRecord) Session[AppConstants.POM_DOCUMENT_NEW]; 

           FileInfo fi = new FileInfo(validFile.FileName); 
           Stream fs = validFile.InputStream; 

           IDbContextualRecord pomFile = pomContext.CreateAndAddRecordForInsert(PomFile.t_name); 
           pomFile[PomFile.c_pomDocumentId] = pomDoc[PomDocument.c_id]; 
           string targetFolder = AppSession.Current.ConfigParameters[AppConstants.UPLOAD_FILE_PATH] + "\\POM\\" + 
                 pomDoc.GetField("id").GetString(); 
           if (!Directory.Exists(targetFolder)) 

           { 
            Directory.CreateDirectory(targetFolder); 
           } 

           long bytesOnTheStream = 0L; 
           try 
           { 

            DirectoryInfo dir = new DirectoryInfo(targetFolder); 
            if (dir.Exists == false) 
             dir.Create(); 

            string fullFileName = Path.Combine(targetFolder, fi.Name); 

            if (fullFileName.Length > 260) 
            { 
             throw new BaseApplicationException(ErrorsList.ERR_P_UPLOAD_FILE_NAME, ErrorsList.GetErrorMessage(ErrorsList.ERR_P_UPLOAD_FILE_NAME)); 

             } 
            Stream targetStream = File.OpenWrite(fullFileName); 
            byte[] buffer = new Byte[AppConstants.BUFF_SIZE]; 
            int bytesRead; 

            // while the read method returns bytes 
            // keep writing them to the output stream 
            while ((bytesRead = fs.Read(buffer, 0, AppConstants.BUFF_SIZE)) > 0) 
            { 
             targetStream.Write(buffer, 0, bytesRead); 
             bytesOnTheStream += bytesRead; 
            } 

            fs.Close(); 
            targetStream.Close(); 

           } 
           catch (Exception ex) 
           { 
            throw; 
           } 

ここでの問題は、それがfile.Inコードビハインドテキストボックスの名前だけは一意の名前を持っていない示し、テキストボックスにアップロードされたファイルのフルパスが表示されないということです。これどうやってするの ?

答えて

1

FullNameプロパティをDirectoryInfo Classとしてください。

線の下に置き換えます

string fullFileName = Path.Combine(dir.FullName, fi.Name); 

string fullFileName = Path.Combine(targetFolder, fi.Name); 

関連する問題