答えは、私が好きだろうほど汎用的ではない、まだこのソリューションは機能しています。ここで
public class MyController : Controller
{
public void Index()
{
PropertyBag["includeZeroBalances"] = false;
PropertyBag["toDate"] = DateTime.Today.ToShortDateString();
}
public void Download(bool includeZeroBalances, DateTime toDate)
{
MyProxy proxy = GetProxy();
byte[] file = proxy.GetFile(includeZeroBalance, toDate);
PropertyBag["downloadurl"] = "data:application/zip;base64," + System.Convert.ToBase64String(file);
}
}
インデックスページはこちら
${Form.FormTag({@action: 'Download'})}
<table>
<tr>
<td>${Form.LabelFor("toDate", "To Date (yyyy/mm/dd):")}</td>
<td><input type="text" id="toDate" name="toDate" value="${?toDate}" /></td>
</tr>
<tr>
<td>${Form.LabelFor("includeZeroBalances", "Include Zero Balances:")}</td>
<td>${Form.CheckboxField("includeZeroBalances")}</td>
</tr>
<tr>
<td> </td>
<td>${Form.Submit("Download", {@class: 'submitb'})}</td>
</tr>
</table>
${Form.EndFormTag()}
あるダウンロードページには、あなたはまた、新しいウィンドウでファイルをダウンロードして自動化するJavaScriptを追加することができ
<table>
<tr>
<td>Your file has been generated successfully. <a href="${downloadurl}">Click here</a> to download your file</td>
</tr>
</table>
です。ファイルを保存するには、この方法を使用しての
document.Ready(function()
{
window.open("${downloadurl}");
});
利点: んファイルがサーバー上に保存されていません。 約300kbを超えてファイルをダウンロードするときのオーバーヘッドが少し下がります レスポンスデータを上書きしないため、ビューは通常通り表示されます。
この方法を使用してファイルを保存する際の短所: 任意のバージョンの任意のブラウザで使用するには十分ではありません。静的ファイルのために使用した場合 、ときに、ファイルの変更、URIは、私は、これが同じ問題に引っかかってきたように見える他の人に役立ちます願っていたファイルの内容はURI
中に埋め込まれているので、再度生成する必要があります。私は、このタイプの質問を多数のボードにわたって、真っ直ぐな解決策なしで見てきました。
こんにちはマウリシオ、あなたが提供したリンクと洞察力に感謝します。残念ながら、これは私が探していたものではありませんでした。 –
@ROFFELPOMP:まあ、それはまさにあなたの答えでやったことです。 –