2012-01-03 48 views
0

我想通過FTP應用程序從WP7上傳照片。如果我選擇照片,並點擊上傳按鈕,服務器響應:503 bad sequence of commands爲什麼我無法使用Windows Phone 7 FTP應用程序上傳

public static void UploadFile(Stream file, string RemoteFile) 
{ 
    SocketAsyncEventArgs socketEventArg2 = new SocketAsyncEventArgs(); 
    Socket socket2 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 
    int bytes; 

    Execute("STOR " + RemoteFile); 
    AutoResetEvent sendCompleted = new AutoResetEvent(false); 

    socketEventArg2.Completed += delegate { 
     sendCompleted.Set(); 
    }; 

    file.Seek(0, SeekOrigin.Begin); 
    while ((bytes = file.Read(buffer2, 0, buffer2.Length)) > 0) 
    { 
     socketEventArg2.SetBuffer(buffer2, 0, bytes); 
     socket2.SendAsync(socketEventArg2); 
     sendCompleted.WaitOne(); 
    } 
    file.Close(); 
} 

而這個方法調用:

Stream ss = e.ChosenPhoto; 
. 
. 
for (int i = 0; i < library.Pictures.Count; i++) 
{ 
    Stream s = library.Pictures[i].GetImage(); 
    if (s.Length == e.ChosenPhoto.Length) 
    { 
     string filename = library.Pictures[i].Name; 
     MessageBoxResult m = MessageBox.Show(filename, "Upload?", MessageBoxButton.OKCancel); 
     if (m == MessageBoxResult.OK) 
     { 
      Ftp.UploadFile(ss, filename); 
     } 
     else 
     { 
      return; 
     } 
    break; 
    } 
} 

ss變量是Stream類型,filename變量是一個String其名稱應運而生遠程服務器。

+0

你究竟在哪裏連接到ftp服務器,或提供用戶名和密碼,或者更改爲有權訪問的文件夾?我在'UploadFile'代碼中看不到任何這些內容。 – 2012-01-03 22:00:36

回答

1

你必須做的不僅僅是用FTP調用STOR--文件傳輸是通過一個單獨的連接而不是命令連接進行的。有關更多詳細信息,請參閱對this question的回覆。

編輯
我剛剛注意到這是WP7。看起來你正試圖在WP7上實現FTP。男孩,你是爲了一個受傷的世界。我有幾點建議你可以考慮:

首先,簡單但昂貴的預先的方式:購買一個第三方庫,通過套接字上的FTP如SecureBlackbox。其次,更復雜,更便宜,最初但可能更昂貴的長期方式:考慮創建一箇中介Web服務,該服務接受文件作爲WEB請求,然後使用服務器端服務器傳輸文件FtpWebRequestFtpWebRequestFtpWebRequest側。 Azure將成爲你的朋友,至少直到上傳開始削減帶寬。

三,不支持FTP,直到FtpWebRequest可用於WP7。

相關問題