1

localhost/xxx/xxx.aspx で実行されている IIS に Web サイトをデプロイしました。私のWPF側では、localhostサーバーからwebclientを使用してテキストファイルをダウンロードし、それをwpfアプリフォルダーに保存します。これが私のやり方です:

  protected void DownloadData(string strFileUrlToDownload)
    {
        WebClient client = new WebClient();
        byte[] myDataBuffer = client.DownloadData(strFileUrlToDownload);         

        MemoryStream storeStream = new MemoryStream();

        storeStream.SetLength(myDataBuffer.Length);
        storeStream.Write(myDataBuffer, 0 , (int)storeStream.Length);

        storeStream.Flush();

        string currentpath = System.IO.Directory.GetCurrentDirectory() + @"\Folder";

        using (FileStream file = new FileStream(currentpath, FileMode.Create, System.IO.FileAccess.ReadWrite))
        {
            byte[] bytes = new byte[storeStream.Length];
            storeStream.Read(bytes, 0, (int)storeStream.Length);
            file.Write(myDataBuffer, 0, (int)storeStream.Length);
            storeStream.Close();
        }

        //The below Getstring method to get data in raw format and manipulate it as per requirement
        string download = Encoding.ASCII.GetString(myDataBuffer);


    }

これは、btyes を書き込んで保存することによって行われます。しかし、複数の画像ファイルをダウンロードして WPF アプリ フォルダーに保存するにはどうすればよいですか? この localhost/websitename/folder/designs/ のような URL があり、この URL の下に多くの画像があります。それらすべてをダウンロードするにはどうすればよいですか? WPFアプリフォルダーに保存しますか?

基本的には、コンテンツが実際に画像であるフォルダーのコンテンツをダウンロードしたいと考えています。

4

1 に答える 1

1

まず、WebClientクラスにはすでにこのためのメソッドがあります。のようなものを使用しますclient.DownloadFile(remoteUrl, localFilePath)

このリンクを参照してください:

WebClient.DownloadFile メソッド (文字列、文字列)

次に、サーバーにダウンロードしたいファイルのインデックスを作成する必要があります。HTTP 経由でディレクトリ リストを取得してからループすることはできません。ディレクトリ リストを有効にするように Web サーバーを構成するか、ディレクトリ リストを生成するためのページが必要です。次に、そのページの結果を を使用して文字列としてダウンロードしWebClient.DownloadString、解析する必要があります。簡単な解決策は、ダウンロードするディレクトリ内のファイルのプレーンテキスト リストを出力する aspx ページです。

最後に、投稿したコードでは、ダウンロードしたすべてのファイルを「フォルダー」という名前のファイルとして保存しています。ダウンロードするファイルごとに一意のファイル名を生成する必要があります。ダウンロードしたいファイルをループしているときは、次のようなものを使用します。

string localFilePath = Path.Combine("MyDownloadFolder", imageName);

whereimageNameは、そのファイルの一意のファイル名 (ファイル拡張子付き) です。

于 2013-09-06T04:04:36.560 に答える