2016-07-21 5 views
0

Ich habe dieses Stück Code, der einen Dateinamen überprüft, wenn es zu lang ist.FilePath in C# mit RadUpload-Textfeld

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; 
           } 

Das Problem hier ist, dass es nicht den vollständigen Pfad der Datei nicht zeigen, die in der Textbox hochgeladen wird, nur den Namen des Code hinter file.In zeigt das Textfeld nicht über einen eindeutigen Namen . Wie kann ich das machen ?

Antwort

1

Verwenden Sie FullName Eigenschaft von DirectoryInfo Class.

unterhalb der Linie ersetzen:

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

mit

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