2012-01-03 6 views
0

WP7 by FTPアプリケーションから写真をアップロードします。写真を選択してアップロードボタンをクリックすると、サーバーの応答: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'コードにこれらのもののどれも見ません。 –

答えて

1

FTPを使用してSTORを呼び出す以外にも、ファイル転送はコマンド接続とは別の接続で行われます。詳細はthis questionへの返答をご覧ください。


これはWP7用です。 WP7でFTPを実装しようとしているようです。あなたは傷ついている世界のためにあなたの中にいます。

まず、簡単ではあるが、手間のかかる方法:SecureBlackboxなどのソケット上のFTPを実行するサードパーティのライブラリを購入してください。

第2に、より複雑で安価な長期的な方法です:ファイルをWEB要求として受け入れる仲介Webサービスを作成してから、FtpWebRequest server-側。 Azureは少なくともアップロードが帯域幅を枯渇させるまで、あなたの友人になるでしょう。

第3に、FtpWebRequestがWP7で利用できるようになるまでFTPをサポートしないでください。

関連する問題