多くのオンラインリソースを調べてスクリプトを作成しましたが、それでもファイルが表示されないようです。コードを実行してファイルを配信する代わりに、「client-home2.aspx/downloadAttachment」ページをロードするだけです。
これが私の背後にあるコードです:
[WebMethod]
public void downloadAttachment(string id)
{
DbProviderFactory dbf = DbProviderFactories.GetFactory();
using (IDbConnection con = dbf.CreateConnection())
{
string sSQL;
sSQL = "select top 1 " + ControlChars.CrLf
+ " FILENAME, FILE_MIME_TYPE, ATTACHMENT" + ControlChars.CrLf
+ " from vwATTACHMENTS_CONTENT" + ControlChars.CrLf
+ " where 1 = 1 " + ControlChars.CrLf;
//Debug.Print(sSQL);
using (IDbCommand cmd = con.CreateCommand())
{
cmd.CommandText = sSQL;
Sql.AppendParameter(cmd, id.ToString(), "ATTACHMENT_ID");
cmd.CommandText += " order by DATE_ENTERED desc" + ControlChars.CrLf;
using (DbDataAdapter da = dbf.CreateDataAdapter())
{
((IDbDataAdapter)da).SelectCommand = cmd;
using (DataTable dt = new DataTable())
{
da.Fill(dt);
if (dt.Rows.Count > 0)
{
foreach (DataRow r in dt.Rows)
{
string name = (string)r["FILENAME"];
string contentType = (string)r["FILE_MIME_TYPE"];
Byte[] data = (Byte[])r["ATTACHMENT"];
// Send the file to the browser
Response.AddHeader("Content-type", contentType);
Response.AddHeader("Content-Disposition", "attachment; filename=" + name);
Response.BinaryWrite(data);
Response.Flush();
Response.End();
}
}
else
{
}
}
}
}
}
}
これが私のjQueryです:
$('.attachmentLink').click(function () {
var id = $(this).attr('id');
/*
$.ajax({
type: "POST",
url: "client-home2.aspx/downloadAttachment",
data: '{id:\'' + id + '\'}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
//alert(msg.d);
}
});
*/
$.download('client-home2.aspx/downloadAttachment', 'id=' + id);
return false;
});
私はこの関数を使用していますhttp://filamentgroup.com/lab/jquery_plugin_for_requesting_ajax_like_file_downloads/
問題は、ファイルが提供されないことです。に移動するだけclient-home2.aspx/downloadAttachment
です。
ファイルをダウンロードできるように、この問題を解決するにはどうすればよいですか?
ありがとうございました。