-1

WebClient クラスと OpenReadAsync メソッドを介して PDF ファイルを分離ストレージにダウンロードしています。ファイルをIsolatedSotrageに保存したら、「file.pdf」という名前を付けますが、元の名前を保持する必要があります。どうやってやるの?私はいくつかの調査を行いましたが、ヘッダー情報が欠落している可能性があるため、ダウンロード前にファイル名を取得するのは難しく、あまり便利ではないことを理解しています. でもダウンロード後?download.OpenReadCompleted 完了メソッドで取得できますか? 単にそれを行う方法を知りませんでした。

皆さんありがとう。

4

2 に答える 2

0

HttpWebRequest応答ヘッダーを使用して取得する必要があります。以下は概念コードの汚れた証明ですが、既存のフローに簡単に統合できます。

    private void Button_Click_1(object sender, RoutedEventArgs e)
    {
        HttpWebRequest req = HttpWebRequest.CreateHttp("http://www.geekchamp.com/marketplace/components/windows-phone-toolkit-in-depth-3rd-edition/downloadfree?id=381255");

        req.BeginGetResponse(new AsyncCallback(ReadCallback), req);
    }

    private void ReadCallback(IAsyncResult asynchronousResult)
    {
        HttpWebRequest req = (HttpWebRequest)asynchronousResult.AsyncState;
        HttpWebResponse response = (HttpWebResponse)req.EndGetResponse(asynchronousResult);

        // RegEx to extract file name from headers
        var reFile = new Regex("filename=\"(.*?)\"");

        // The header that contains the filename. Example:
        // Content-Disposition: attachment; filename="Windows Phone Toolkit In Depth 3rd Abstract.pdf"
        var contentDisposition = response.Headers["Content-Disposition"];

        // FIXME: this assumes match success. Might be easier to just use a replace
        var filename = reFile.Match(contentDisposition).Groups[1].Value;

        // ... your code here ...
    }
于 2013-06-11T23:59:21.270 に答える