2012-01-26 42 views
1

我在使用ftp上傳後上傳的文件時遇到問題。FileUpload文件在使用ftp上傳後被清除

用戶上傳的文件包含xml。我必須將此文件保存到磁盤,但我無法將此文件直接寫入磁盤,因此我使用ftp來保存它。保存後,需要處理它以將其內容保存到數據庫中。 XmlReader失敗,並顯示錯誤「未檢測到根元素」。經過一些調試後,我發現文件是空的。

我試圖複製該文件(其中xsdUpload是由用戶上傳的文件):

FileUpload test = new FileUpload(); 
test = xsdUpload; 

但我真的不舒爾如果這也copys內存中的文件。

FTP上載功能如下:

public string uploadXsd(string fileName, FileUpload xsd) 
    { 
     FtpWebRequest request = (FtpWebRequest)WebRequest.Create(url + '/' + fileName); 

     request.Method = WebRequestMethods.Ftp.UploadFile; 

     request.Credentials = new NetworkCredential(username, password); 

     StreamReader sourceStream = new StreamReader(xsd.FileContent); 
     byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd()); 
     sourceStream.Close(); 
     request.ContentLength = fileContents.Length; 

     Stream requestStream = request.GetRequestStream(); 
     requestStream.Write(fileContents, 0, fileContents.Length); 
     requestStream.Close(); 

     FtpWebResponse response = (FtpWebResponse)request.GetResponse(); 

     response.Close(); 
     return url + '/' + fileName; 
    } 

此功能工作正常。我可以在它應該在的目錄中看到該文件。

要處理我使用的文件:

XmlReader reader = XmlReader.Create(xsdUploaded.FileContent); 

while (reader.Read()) 
{ 
     if (reader.Name != "") 
     { 

有沒有人有辦法解決嗎?

回答

0

似乎FileContent屬性是Stream類的實例,你應該把它尋求在二讀之前開始,即

xsdUploaded.FileContent.Seek(0, SeekOrigin.Begin); 
XmlReader reader = XmlReader.Create(xsdUploaded.FileContent); 

我不知道,希望這有助於。

此致敬禮。

+0

我用xsdUploaded.FileContent.Lenght檢查了文件的長度,返回值是whas 0,但我會試一試 – h3rj4n