ホームページ  >  記事  >  バックエンド開発  >  ファイルをダウンロードする.Net Core実装例

ファイルをダウンロードする.Net Core実装例

黄舟
黄舟オリジナル
2018-05-15 15:28:197288ブラウズ

この記事では、Silk.NetCore ダウンロード ファイルについて説明します。一般的なダウンロードには、A タグがダウンロード ファイル アドレスを直接指す方法と、バックグラウンド出力ファイル ストリームをリクエストする post または get メソッドの 2 つがあります。この2つ; 役に立ったら、サポートしてください。

  • コンテンツタイプを認識せずにサイトにファイルをダウンロードできるようにします (つまり、MIME タイプの制限なしでダウンロードします)

  • .nupkg および .apk サフィックスを持つファイルのダウンロードを許可する方法

  • Razorテンプレート ダウンロード後のファイルの例

  • 過去 6 か月間の NetCore の使用に関するいくつかの考えと不安

サイトがコンテンツ タイプを認識せずにファイルをダウンロードできるようにする (つまり、MIME タイプの制限なしでダウンロードする)

netcore の Web プロジェクト コンテンツ タイプに関しては、ダウンロードを許可する組み込みのファイル タイプがいくつかあります。まず、通常の razorweb プロジェクトを介した接続を通じて Excel を直接ダウンロードする例を見ていきます。まず、wwwroot に bak フォルダーを作成します。プロジェクトのディレクトリに移動し、そのディレクトリに次のファイルがダウンロードに保存されます:

テストに合格した後、

ファイルのみに制限はありません

public を通じて設定できます。

static IApplicationBuilder UseStaticFiles(this IApplicationBuilder app, StaticFileOptions options); 拡張子を次のコードに変更するだけです:

            app.UseStaticFiles(new StaticFileOptions
            {                //设置不限制content-type
                ServeUnknownFileTypes = true 
            });
この時点では、操作を再起動しても問題ありません。以下のスクリーンショットに示すように、これらのファイルにアクセスしてダウンロードできます (現時点では、任意のサフィックスが付いたファイルをダウンロードできることに注意してください):

Google Chrome の cs サフィックスが付いたファイルは、そのコンテンツですここには画像がありません。興味がある場合は、試してみてください。

.nupkg および .apk 拡張子を持つファイルのダウンロードを許可する方法

上記の例では、

ServeUnknownFileTypes = を使用できます。 true;

無制限のダウンロード ファイル タイプを直接設定します。これは、通常はあまり良くないか、許可されていない、または、

.nupkg および .apk サフィックス が付いたファイルのダウンロードを追加する必要がある場合のみ、次のコードを使用して、次のような MIME タイプを追加できます:

app.UseStaticFiles(new StaticFileOptions
            {                //ServeUnknownFileTypes = true 
                ContentTypeProvider = new FileExtensionContentTypeProvider(new Dictionary<string, string>
                {
                    { ".apk","application/vnd.android.package-archive"},
                    { ".nupkg","application/zip"}
                })
            });
Excel、apk、nupkg サフィックスを持つファイルをダウンロードするのにも同じことができます:

ただし、今回は

http:

にアクセスします。 //

localhost:1120/ bak/Startup.cs

はダウンロードされたコンテンツを取得しません: 拡張子タイプを .cs ファイルに追加していないため、システムはここで 404 を直接返します。

FileExtensionContentTypeProvider

オブジェクトを渡します コンストラクターは、ダウンロードが許可されているコンテンツ タイプのファイルをプロジェクトに知らせるためにマッピング dic タイプを渡します

Razor テンプレートのダウンロード後のファイルの例

正直に言うと、勉強します。最近時間があるときに、次のように Razor テンプレートを作成します。投稿フォームを通じてバックエンドにファイルをダウンロードするように要求します。login.cshtml ファイルのコードは以下に直接示されています。 asp-page-handler=

バックエンド メソッドをリクエストするために、彼女が生成した最終的な HTML コードがどのようなものかを見てみましょう:

リクエストされたバックエンド メソッドは主に handler を介して渡されることがわかります。バックエンド コードは次のように記述されています (ファイルのダウンロードを容易にするために、love.apk を例にします):

@page
@model LoginModel
@{}<form method="post">
    <button type="submit" asp-page-handler="down" class="btn">下载</button>
    <button type="submit" asp-page-handler="down01" class="btn">下载01</button>
    <button type="submit" asp-page-handler="down02" class="btn">下载02</button>
</form>

バックエンドの 3 つのポスト受け入れメソッドはすべてダウンロードしたファイルを出力するには FileStreamResult

を使用します。違いはファイル ソースにあります。単純なサイトの場合、ダウンロード ファイルは通常、私の wwwroot/bak ディレクトリに存在します。これは、最初のダウンロード方法であるサイト仮想ディレクトリを通じてダウンロードされます。 ;

ファイル セキュリティのため、一部のサイトは通常、Web サイトの同じサーバー ディスク上に存在するため、ここで 2 番目の方法でファイル ストリームを取得する必要があります。それを File(); に渡します

最後の方法は、自分の他のサイトまたは他の人のサイトにあるファイルを転送し、自分のファイルとして出力することです。この方法は、よく と呼ばれる、かみそりの ハンドラー

パラメータの

ホットリンク方法の 1 つです。ここで注意する必要があるのは、バックエンド コードの OnGetxxx または OnPostxxx メソッドの xxx 名に対応しているということです。これは razor リクエストの仕様であり、従う必要があります。 過去 6 か月間の NetCore の使用に関するいくつかの考えと不安

感想:

現時点で、Netcore の最新バージョン 2.0 の API は、私がこれまでに行ったいくつかのプロジェクトの使用から判断すると、非常に強力です。サポートは非​​常に充実しており、私が会う前に、画像処理用の API があるかどうか尋ねられたことがありましたが、その答えは「はい」です。興味がある人は、nuget パッケージ コミュニティにチェックしてください。 https://www.nuget.org/packages; いくつかのプロジェクトを経験した結果、Netcore の mvc プロジェクトに関する限り、mvc フレームワークを知っている限り、その学習コストは実際には高くないと感じています。または Webform (個人的には、これは razor に相当します) なので、プレッシャーはありません。netcore2.0 を試す勇気がない人や、学ぶのにお金がかかると思っている人には試してみることをお勧めします。

netcore2.0 が登場してからしばらく時間が経ちましたが、この時期には多くの友人がいます。ブログ ガーデンでは、git に関する多くの関連記事やプロジェクトを共有していますが、netcore で発生した問題についての回答や提案はまだほとんどありません。 3 つの netqq グループの開発には人々が心配しています。もちろん、会社の技術的な意思決定レベルの人々も注目しており、新しいプロジェクトを開始するためにそれを利用していることを私は知っています。他の都市については知りませんが、ここ北京にはネットコアをスタートアップ プロジェクトの出発点として使用しているスタートアップがたくさんあります。そのため、まだ傍観している友人やリーダーが行動を開始し、協力して促進することを願っています。コミュニティの発展。

以上がファイルをダウンロードする.Net Core実装例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。