2013-05-03 3 views
0

Я пытаюсь загрузить изображение и видео с помощью кода ниже, нет проблемы с загрузкой изображения с помощью ftp, но когда я загружаю видео I получить следующее сообщение об ошибкеwebclient.UploadData «Подключенное соединение было закрыто: произошла непредвиденная ошибка при получении»

Ошибка

The underlying connection was closed: An unexpected error occurred on a receive. 

Ниже приводится код, я использую, чтобы загрузить

код

try 
      { 
       string uploadFileName = Path.GetFileName(FU_Video.FileName); 
       uploadFileName = "video." + uploadFileName.Split('.')[1]; 
       using (WebClient client = new WebClient()) 
       { 
        string ftpAddres = "ftp://username:[email protected]" + fullname; 

        if (!GetAllFilesList(ftpAddres, "username", "password")) 
        { 
         FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create(ftpAddres); 
         ftp.Method = WebRequestMethods.Ftp.MakeDirectory; 
         ftp.KeepAlive = false; 

         FtpWebResponse response = (FtpWebResponse)ftp.GetResponse(); 
        } 
        client.UploadData(new Uri(ftpAddres + "/" + uploadFileName), FU_Video.FileBytes); 
       } 

и вот трасса стека.

трассировки стека

at System.Net.WebClient.UploadDataInternal(Uri address, String method, Byte[] data, WebRequest& request) 
    at System.Net.WebClient.UploadData(Uri address, String method, Byte[] data) 
    at System.Net.WebClient.UploadData(Uri address, Byte[] data) 
    at MentorMentee.SignUp.signup.btn_VidPreview_Click(Object sender, EventArgs e) in I:\VS Projects\code\MentorMentee1\MentorMentee\SignUp\signup.aspx.cs:line 469 

после поиска я прочитал, чтобы сделать соединение живым ложным, но я получаю ошибку на линии client.UploadData(uri,byte[]);

пожалуйста, дайте мне знать, что случилось с моим кодом? поскольку видео загружается на ftp, но я получаю ошибку.

ответ

1

Я помню, что у меня была аналогичная проблема, но не помню точно, что заставило ее работать. Вот код, который хорошо работает для меня:

public void Upload(Stream stream, string fileName) 
{ 
    if (stream == null) 
    { 
     throw new ArgumentNullException("stream"); 
    } 

    try 
    { 
     FtpWebRequest ftpRequest = CreateFtpRequest(fileName); 
     ftpRequest.Method = WebRequestMethods.Ftp.UploadFile; 

     using (Stream requestSream = ftpRequest.GetRequestStream()) 
     { 
      Pump(stream, requestSream); 
     } 

     var ftpResponse = (FtpWebResponse)ftpRequest.GetResponse(); 
     ftpResponse.Close(); 
    } 
    catch (Exception e) 
    { 
     throw new FtpException(
      string.Format("Failed to upload object. fileName: {0}, stream: {1}", fileName, stream), e); 
    } 
} 

private FtpWebRequest CreateFtpRequest(string fileName) 
{ 
    if (fileName == null) 
    { 
     throw new ArgumentNullException("fileName"); 
    } 

    string serverUri = string.Format("{0}{1}", ftpRoot, fileName); 
    var ftpRequest = (FtpWebRequest)WebRequest.Create(serverUri); 
    ftpRequest.Credentials = new NetworkCredential(configuration.UserName, configuration.Password); 
    ftpRequest.UsePassive = true; 
    ftpRequest.UseBinary = true; 
    ftpRequest.KeepAlive = false; 

    return ftpRequest; 
} 

private static void Pump(Stream input, Stream output) 
{ 
    var buffer = new byte[2048]; 
    while (true) 
    { 
     int bytesRead = input.Read(buffer, 0, buffer.Length); 
     if (bytesRead == 0) 
     { 
      break; 
     } 
     output.Write(buffer, 0, bytesRead); 
    } 
} 
Смежные вопросы

 Смежные вопросы