Webページの実装ファイルのパッケージダウンロード
Webページの実装ファイルのパッケージダウンロード
この間、ファイルを一括ダウンロードする必要がありました.最初は、ダウンロードする必要があるすべてのファイルを貼り付けボードにコピーすることで、迅雷や他のダウンロードソフトウェアを大量にダウンロードすることができますが、ユーザーのニーズを満たすことはできません.
ユーザーは、クリックするとダウンロードする必要があるすべてのファイルを1つのパッケージに圧縮してダウンロードするだけでいいことを望んでいます.これにより、機能全体を再変更する必要があります.
そこで,ユーザはダウンロードが必要なファイルを選択した後,フロントエンドからダウンロードが必要なすべての接続をバックエンドに送信し,バックエンドが要求を受信した後,すべてのファイルを圧縮して圧縮パケットを生成し,一時ディレクトリに格納した後,ディレクトリをフロントエンドに返信するとダウンロードできるようにした.
フロントエンドはjqueryでチェックされたすべての行を取得し、選択された行に対応してダウンロードするファイル接続を取得し、1つの配列に格納します.さらにajaxで配列をバックエンドに非同期で送信します.
フロントエンドコード:
バックエンドキー:(ここではc#ですが、もちろん他の言語で実現できます.)
ここでもう一つ完璧ではないのは、ダウンロードしたファイル名を変更できないことです.
この間、ファイルを一括ダウンロードする必要がありました.最初は、ダウンロードする必要があるすべてのファイルを貼り付けボードにコピーすることで、迅雷や他のダウンロードソフトウェアを大量にダウンロードすることができますが、ユーザーのニーズを満たすことはできません.
ユーザーは、クリックするとダウンロードする必要があるすべてのファイルを1つのパッケージに圧縮してダウンロードするだけでいいことを望んでいます.これにより、機能全体を再変更する必要があります.
そこで,ユーザはダウンロードが必要なファイルを選択した後,フロントエンドからダウンロードが必要なすべての接続をバックエンドに送信し,バックエンドが要求を受信した後,すべてのファイルを圧縮して圧縮パケットを生成し,一時ディレクトリに格納した後,ディレクトリをフロントエンドに返信するとダウンロードできるようにした.
フロントエンドはjqueryでチェックされたすべての行を取得し、選択された行に対応してダウンロードするファイル接続を取得し、1つの配列に格納します.さらにajaxで配列をバックエンドに非同期で送信します.
フロントエンドコード:
$.ajax({
url: "/Home/GetPackageDownLink", //
data: { DownLinkList: JSON.stringify(copyConten) }, // json
type: "post",
dataType: "json",
success: function (data) {
if (data.code == 1) {
var link = document.createElement('a');// a ,
link.href = data.message;//message
var reportNo = GetSelectFirstReportNo();// ,
link.setAttribute("download", reportNo + " ");//
link.click();//
}
}
});
バックエンドキー:(ここではc#ですが、もちろん他の言語で実現できます.)
var finalTarget = Path.Combine(targetDire, newNo + ".zip");//
//
ZipFiles(newDownLinkList, finalTarget, null);//newDownLinkList
result = TargetFileName; //
ここでもう一つ完璧ではないのは、ダウンロードしたファイル名を変更できないことです.