2012-01-26 3 views
1

ftp로 업로드 한 파일을 업로드 한 후 처리하는 데 문제가 있습니다.ftp로 업로드 한 후 FileUpload 파일이 지워짐

사용자가 업로드 한 파일에 xml이 포함되어 있습니다. 이 파일을 디스크에 저장해야하지만이 파일을 디스크에 직접 쓸 수 없기 때문에 ftp를 사용하여 저장합니다. 저장된 후에는 내용을 데이터베이스에 저장하기 위해 처리해야합니다. "No root element detected"오류로 인해 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 속성은 스트림 클래스 인스턴스 것 같습니다과 두 번째 읽기 전에 처음으로 탐색한다, 즉

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

나는 확실하지 않다,이 도움이되기를 바랍니다.

감사합니다.

+0

xsdUploaded.FileContent.Lenght를 사용하여 파일의 길이를 확인하고 반환 값은 0이지만 시도해 보겠습니다. – h3rj4n

관련 문제