C#で、サーバーのローカルにあるzipフォルダをブラウザからダウンロード出来るようにしたいです。
※追記
環境:ASP.NET Web Forms、
OS :Windows10、
IDE:Visual Studio 2017になります!
対象のブラウザ:Chrom,IE,FireFox,Edgeなどの主要ブラウザ
(IEなどは古すぎるバージョンに対応する必要なありません)
aspx:画面上にButtonコントロールを配置しています。
aspx.cs:ボタンクリック時に、
サーバーに置いてあるzipフォルダを、ブラウザ上からダウンロード出来るようにしたいです。
(クライアントがボタンをクリックすると、ブラウザかたYYYYMM.zipをダウンロードできる)
対象のzipフォルダは
C:\sample\YYYYMM.zip(フォルダ名は現在年+月)
のように置いてあります。
ただ、対象のフォルダはbatで作成しているので、zipフォルダでないバージョン
C:\sample\YYYYMM
の方が実装が簡単でしたら、これでも問題ありません。
中身はcsvが3つほど入っています。
.NET Framework4.5以降から、
ZipFileクラスやZipArchiveクラスといったzipを操作できるクラスが出来たようですが、
ブラウザからのダウンロードが出来る簡単な方法はありますでしょうか?
(DotNetZipのような、ライブラリを使用する方法は避けたいです。
※追記
頂いだコメントから、zipフォルダの実態はファイルだと知りましたので、
ブラウザからファイルをダウンロードするよう、実装中です!
今のコードでダウンロードは出来るのですが、
ブラウザからダウンロードが出来ず…
引き続き調べながら実装中です。
試したこと
C#
1protected void btnContentsLinklist_Click(object sender, EventArgs e) 2{ 3 string downloadFilePath = @"C:\sample\YYYYMM.zip"; 4 WebClient mywebClient = new WebClient(); 5 File.SetAttributes(downloadFilePath, FileAttributes.Normal); 6 //このメソッドだと、2番目の引数に指定したパスに勝手に出来てしまう… 7 mywebClient.DownloadFile(downloadFilePath, @"d:\myfile.zip"); 8}
補足情報(FW/ツールのバージョンなど)
HTMLのaタグ download属性も試してみましたが、
ブラウザは強力なウィルスのダウンロードを阻止するため、
ローカルのファイルはセキュリティ制約を外さないとダウンロード出来るようにならないらしいです…。
aタグからのアプローチはひとまず保留で考えています。
.NET Framework4.7です。



回答2件
あなたの回答
tips
プレビュー