www.fenet.jp Open in urlscan Pro
2606:4700:3033::ac43:c95a  Public Scan

URL: http://www.fenet.jp/dotnet/column/language/5394/
Submission: On March 18 via manual from JP — Scanned from JP

Form analysis 3 forms found in the DOM

GET https://www.fenet.jp/jobinfo/index

<form class="bl_form_btnArea" action="https://www.fenet.jp/jobinfo/index" method="get">
  <input type="hidden" name="site" value="dotnet"> <input type="hidden" name="mode" value="search"> <input type="hidden" name="org_source" value="column"> <input type="hidden" name="org_medium" value="dotnet_5394"> <input type="hidden"
    name="org_campaign" value="gnav_search">
  <div class="bl_form_btnArea_box bl_form_btnArea_box__half">
    <input type="text" name="q" class="bl_form_input bl_form_input__mini hp_w100p" placeholder="例:港区 Cisco">
  </div>
  <div class="bl_form_btnArea_box bl_form_btnArea_box__half">
    <button type="submit" class="el_btn el_btn__s event_link" id="gnav_search">案件検索</button>
  </div>
</form>

Name: searchformGET https://www.fenet.jp/dotnet/column/

<form role="search" method="get" id="searchform" class="bl_form_btnArea searchform" action="https://www.fenet.jp/dotnet/column/" name="searchform">
  <div class="bl_form_btnArea_box bl_form_btnArea_box__70p">
    <input type="text" value="" class="bl_form_input bl_form_input__m hp_w100p" name="s" id="s">
  </div>
  <div class="bl_form_btnArea_box bl_form_btnArea_box__30p">
    <input type="submit" class="el_btn el_btn__m" id="searchsubmit" value="検索">
  </div>
</form>

GET https://www.fenet.jp/jobinfo/index

<form class="bl_form bl_form_btnArea hp_pt0" action="https://www.fenet.jp/jobinfo/index" method="get">
  <input type="hidden" name="site" value="dotnet"> <input type="hidden" name="mode" value="search"> <input type="hidden" name="org_source" value="column"> <input type="hidden" name="org_medium" value="dotnet_5394"> <input type="hidden"
    name="org_campaign" value="gnav_search">
  <div class="bl_form_btnArea_box bl_form_btnArea_box__70p">
    <input type="text" name="q" class="bl_form_input bl_form_input__m hp_w100p" placeholder="例:港区 .NET">
  </div>
  <div class="bl_form_btnArea_box bl_form_btnArea_box__30p">
    <button type="submit" class="el_btn el_btn__m event_link" id="gnav_search">案件検索</button>
  </div>
</form>

Text Content

.NETエンジニア・プログラマ向けの技術情報・業界ニュースをお届けします。

記事一覧 記事を探す
案件・求人を探す
案件検索
 お気に入り案件  閲覧した案件
VB.NET ASP.NET C# C++ Java PHP Python Ruby JavaScript AWS Linux Android
SQLServer Oracle MySQL PostgreSQL

その他条件はこちら

 1. FEnet.NETナビ
 2. .NETコラム
 3. .NET
 4. ASP.NET
 5. ASP.NETでファイルのダウンロード機能を実装する方法


ASP.NETでファイルのダウンロード機能を実装する方法

ASP.NET
 * .NET
 * ASP.NET
 * C#
 * プログラミング言語

公開日時: 2020-09-25   更新日時: 2022-06-09
この記事でわかること
 * ASP.NETを使ってファイルダウンロードを実装する
 * ファイル名が文字化けする際の対策
 * ファイルのダウンロード機能の実装は共通モジュールで



ASP.NETとは、C#やVB.NETで開発できるWebアプリケーションのフレームワークです。Webアプリを作成する際に、よく使う機能にファイルのダウンロードがあります。サーバサイドで実装して、ユーザーが使うクライアントに出力するので、少し難しく感じるかもしれませんが、サーバサイドで、HttpResponseを使うとこの機能は比較的簡単に実装できます。ここではこのダウンロードをする方法について解説していきます。

システム
エンジニア
ASP.NETを利用して、Webアプリを開発中です。仕様書にファイルのダウンロードをするように明記されているのですが、どうやってコーディングを行えば良いのでしょうか?
プロジェクト
マネージャー ファイルのダウンロードを行う場合には、HttpResponseを使って実装します。簡単なサンプルプログラムを提供しますので、確認してみましょう。

実行環境
・Visual Studio Community 2017


ASP.NETを使ってファイルダウンロードを実装する

それでは早速ですが、ASP.NETを活用してのファイルのダウンロードを行う方法を、サンプルプログラムをもとに解説していきます。

ファイルのダウンロード クライアントサイド


<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs"
Inherits="WebApplication21.WebForm1" %> <!DOCTYPE html> <html
xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta
http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title>
</head> <body> <form id="form1" runat="server"> <div> <asp:Button
ID="btnDownload" runat="server" Text="ダウンロード" OnClick="btnDownload_Click"/>
</div> </form> </body> </html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs"
Inherits="WebApplication21.WebForm1" %>
 
<!DOCTYPE html>
 
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:Button ID="btnDownload" runat="server" Text="ダウンロード"
OnClick="btnDownload_Click"/>
        </div>
    </form>
</body>
</html>



ファイルのダウンロード サーバーサイド

C#

using System; namespace WebApplication21 { public partial class WebForm1 :
System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { }
public void btnDownload_Click(object sender, EventArgs e) { var filename =
@"test.txt"; Response.Clear(); Response.ContentType = "text/plain";
Response.HeaderEncoding = System.Text.Encoding.UTF8; Response.ContentEncoding =
System.Text.Encoding.UTF8; Response.AddHeader("Content-Disposition",
"attachment;filename=" + Server.UrlEncode(filename)); Response.End(); } } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using System;
 
namespace WebApplication21
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            
        }
 
 
        public void btnDownload_Click(object sender, EventArgs e)
        {
 
            var filename = @"test.txt";
            Response.Clear();
            Response.ContentType = "text/plain";
            Response.HeaderEncoding = System.Text.Encoding.UTF8;
            Response.ContentEncoding = System.Text.Encoding.UTF8;
            Response.AddHeader("Content-Disposition", "attachment;filename=" +
Server.UrlEncode(filename));
            Response.End();
 
        }
    }
}



実行結果
◆ダウンロードボタンを押下する


◆ダウンロード成功


上記のプログラミングで大事なポイントは、Content-Typeに何を指定するかです。今回はテキストファイルを出力するためのContent-Typeとしてtext/plainを指定しました。他のファイルを出力するためのContent-Typeも多数そろえられていますので、ここでは代表的なContent-Typeの種類を確認しておきましょう。

■Content-Typeの種類

Content-Type 出力ファイル様式 text/plain テキストファイル text/csv CSVファイル text/html HTMLファイル
application/octet-stream EXEファイルなどの実行ファイル application/pdf PDFファイル
application/vnd.ms-excel EXCELファイル 拡張子が.xlsのもの
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet EXCELファイル
拡張子が.xlsxのもの image/jpeg JPEGファイル image/bmp Bitmapファイル application/zip Zipファイル




ファイル名が文字化けする際の対策

ダウンロードする際に、ファイル名に日本語を使用すると、文字化けや意図しないファイル名が表示されることがあります。
Webアプリケーションからクライアントサイドへの応答返信時、Content-Disposition ヘッダに、”attachment;
filename=xxx” というコーディングを行うと、クライアントサイドへのファイルのダウンロード処理が行われます。

ダウンロードを行うファイル名は、このヘッダの filename=xxx
に設定しますが、xxxの箇所に日本語のようなマルチバイトの文字列を指定すると、文字化けが発生する恐れがあります。

これを回避させるためには、 ヘッダを常に UTF-8 で送信するようにしましょう。ファイル名を
Server.UrlEncode()で囲むことで解決できます。しかし、使用しているブラウザによっては、解決できない場合もありますので、注意が必要です。

システム
エンジニア
ファイル名を指定する際には、UTF-8で送信することを心がけます。ファイルのダウンロード処理が実装できれば、作業の幅も広がりそうです。自分でもコーディングしてみます!
プロジェクト
マネージャー
Webアプリケーションを開発するならば、ファイルのアップロードとダウンロードは行えるようにしておきたいところです。早く自分でも実装できるように、積極的にコーディング方法は覚えていきましょう!



ファイルのダウンロード機能の実装は共通モジュールで

ASP.NETでファイルのダウンロードを行う方法は、今回解説したやり方をマスターできれば、他でも応用できます。サーバサイドで、このファイルダウンロード処理を共通モジュール化しておけば、どこからでも呼び出すことができ、1箇所の実装で済むはずです。

ダウンロード機能などは、プロジェクトではじめに共通化する箇所でありますので、早めに実装方法は理解し、プロジェクトメンバー全員が使えるダウンロード機能を実装していきましょう。

>>>ASP.NETの案件を探すならFEnet .NET Navi



FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。



株式会社オープンアップシステムはこんな会社です

秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。

 * スマホアプリから業務系システムまで
   
   
   
   スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。

 * 充実した研修制度
   
   
   
   毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。

 * 資格取得を応援
   
   
   
   スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。

 * 東証プライム上場企業グループ
   
   
   
   オープンアップシステムは東証プライム上場「株式会社夢真ビーネックスグループ」のグループ企業です。
   
   安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。


株式会社オープンアップシステムに興味を持った方へ

株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。

年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。



株式会社オープンアップシステムへ応募する
会員登録不要! カンタン45秒!


新着案件NEW JOB


 * 開発エンジニア/東京都品川区/【WEB面談可】/在宅ワーク
   
   月給29万~30万円
   東京都品川区(大崎駅)
   * Windows


 * 遠隔テストサービス機能改修/JAVASCRIPT/東京都港区/【WEB面談可】/テレワーク
   
   月給45万~60万円
   東京都港区(六本木駅)
   * JavaScript


 * 病院内システムの不具合対応、保守/東京都豊島区/【WEB面談可】/テレワーク
   
   月給30万~30万円
   東京都豊島区(池袋駅)
   * Windows


 * 開発/JAVASCRIPT/東京都豊島区/【WEB面談可】/テレワーク
   
   月給50万~50万円
   東京都豊島区(大塚駅)
   * JavaScript


 * 債権債務システム追加開発/東京都文京区/【WEB面談可】/在宅勤務
   
   月給62万~67万円
   東京都文京区(後楽園駅)
   * Windows


 * PMO/東京都豊島区/【WEB面談可】/在宅勤務
   
   月給55万~55万円
   東京都豊島区(池袋駅)
   * Windows


関連記事RELATED POSTS


 * 【ASP.NET入門】ASP.NETとC#で文字列を出力するアプリを作る
   
   2019-10-11   2022-06-01
   
   ASP.NETは簡単にアプリやWebサイトを作成することができます。
   ASP.NETには様々な機能があり、アプリやWebサイトを作成しやすいフレームワークで、これからASP.NETを始めようと考えている方にも扱いやすいの
   […]


 * 【ASP.NET MVC入門その1】ASP.NET MVCで”HELLO WORLD”を表示する
   
   2019-11-18   2022-06-01
   
   「ASP.NET MVC」を使用してWebアプリケーションを作成します。 この入門シリーズでは、ASP.NET
   MVCに必要なModel、View、Controllerの内容を確認します。 初回は、MVCを利用して、「H […]


 * 【ASP.NET CORE入門】ASP.NETとの違いやWEBアプリの作成手順
   
   2020-02-05   2022-06-08
   
   ASP.NETでアプリケーションを作成する際には、.NET Frameworkが使われてきました。ただ、.NET
   Frameworkは開発に使用できるOSが限られていて、Windows以外のOSでは開発することができない […]


 * 【ASP.NETでポストバックを実装】BUTTON.POSTBACKURLでポスト先のURLを取得する
   
   2020-03-10   2022-06-14
   
   ポストバックとは、フォームなどで入力されたデータを送信する際に、開いているページそのものをデータの送り先として指定することです。ASP.NETでは、Windowsアプリケーションのような動作を実現させるために、このような
   […]


 * ASP.NETとC#でメッセージボックスを表示する方法
   
   2020-03-25   2022-06-08
   
   メッセージボックスはコーディング最中の動作確認や、ユーザーへの情報通知など、多様な使い方があります。言語の違いによって、実装方法は多少異なりますが、どの言語でも似たような機能が備わっていることから、使用頻度の高さがうかが
   […]




SEARCH 検索




MEMBER メンバー紹介


プロジェクトマネージャー(PM)

チームは一致団結!仕事は元気に楽しく!がモットーのプロジェクトマネージャー。新しい技術には積極的にチャレンジしていきたい。休日はもっぱらアウトドアで日光浴している。


プロジェクトリーダー(PL)

入社して7年目。WebアプリやiOSアプリ開発を担当。現在は教育も担当している。趣味がゲームのため、例え話にゲームの話が多い。


システムエンジニア(SE)

.NET開発と教育担当の二足の草鞋を履く入社5年目SE。Linqやラムダ式を使うことが楽しいので、どちらかというとサーバーサイドが好き。猫より犬派。


プログラマ(PG)

入社3年目のプログラマー。最近は設計も携わり、技術力とともに料理スキルも上がっている。得意料理はゆで卵。


CATEGORIES カテゴリ

 * プログラミング言語
   * C#
   * HTML・CSS
   * Java
   * Javascript
   * jQuery
   * PHP
   * Python
   * Ruby
   * VB.NET
 * .NET
   * .NET Framework
   * ADO.NET
   * ASP.NET
   * Entity Framework
   * LINQ
   * WPF
 * データベース
   * MySQL
   * Oracle
   * PostgreSQL
   * SQL
   * SQL Server
 * 開発環境(IDE)
   * Visual Studio
 * クラウド
 * ツール・ソフトウェア
   * Mac
   * Windows
 * 転職・キャリア
 * エンジニア全般
   * 働き方
 * 資格・スキルアップ
 * サーバ
 * 生活・便利


NEW JOBS 新着案件


 * 開発エンジニア/東京都品川区/【WEB面談可】/在宅ワーク
   
   月給29万~30万円
   東京都品川区(大崎駅)
   * Windows


 * 遠隔テストサービス機能改修/JAVASCRIPT/東京都港区/【WEB面談可】/テレワーク
   
   月給45万~60万円
   東京都港区(六本木駅)
   * JavaScript


 * 病院内システムの不具合対応、保守/東京都豊島区/【WEB面談可】/テレワーク
   
   月給30万~30万円
   東京都豊島区(池袋駅)
   * Windows


 * 開発/JAVASCRIPT/東京都豊島区/【WEB面談可】/テレワーク
   
   月給50万~50万円
   東京都豊島区(大塚駅)
   * JavaScript


 * 債権債務システム追加開発/東京都文京区/【WEB面談可】/在宅勤務
   
   月給62万~67万円
   東京都文京区(後楽園駅)
   * Windows


 * PMO/東京都豊島区/【WEB面談可】/在宅勤務
   
   月給55万~55万円
   東京都豊島区(池袋駅)
   * Windows

FEnetは夢真ビーネックスグループのグループシナジーを活かして立ち上げられた転職サイトです。
他のシリーズサイトでも案件・求人情報を掲載中。FEnetの各シリーズこちら。

 * ITインフラの求人・案件
 * .NETの求人・案件
 * Javaの求人・案件
 * AWSの求人・案件
 * Salesforceの求人・案件
 * ITエンジニアを目指す

Copyright © 2023 FEnet All Rights Reserved.


記事一覧
すべての記事 プログラミング言語.NETデータベース開発環境(IDE)クラウドツール・ソフトウェア転職・キャリアエンジニア全般資格・スキルアップサーバ生活・便利
記事を探す 案件・求人を探す
案件検索
VB.NET ASP.NET C# C++ Java PHP Python Ruby JavaScript AWS Linux Android
SQLServer Oracle MySQL PostgreSQL
その他条件はこちら