从ajax和ActionResult下载文件

我想在浏览器中使用ajax和ActionResult下载文件。该文件已下载并从我的ActionResult返回。

我看到Http查询正常,并且在响应正文中看到了数据。问题是不建议将该文件保存在浏览器中。

一切似乎都很好。我在教程和论坛中看到的所有内容都和我一样,但我没有说过XD。我不明白我和其他人之间有什么区别。

这是我的ActionResult:

public ActionResult ShippingDownloadDNPriority(string SALE_GUID)

{

int supId = -1;

int.TryParse(Session["SupId"].ToString(), out supId);

if (supId < 0)

return null;

WebResponse response = CallApi.DownloadAndCreateDN(Session["UserLogin"].ToString(), Session["IdentConnect"].ToString(), SALE_GUID, supId, true);

Stream responseStream = response.GetResponseStream();

var cd = new System.Net.Mime.ContentDisposition

{

FileName = "myfile.pdf",

Inline = false,

};

Response.Headers.Add("Content-Disposition", cd.ToString());

Response.ContentType = "application/octet-stream";

return File(responseStream, System.Net.Mime.MediaTypeNames.Application.Pdf, "myfile.pdf");

}

public static WebResponse DownloadAndCreateDN(string login, string session, string SALE_GUID, int supid, bool priority)

{

string[] res = new string[2];

StringBuilder postData = new StringBuilder();

postData.AppendLine("{");

postData.AppendLine(string.Format("\"login\":\"{0}\",", login));

postData.AppendLine(string.Format("\"session\":\"{0}\",", session));

postData.AppendLine(string.Format("\"saleguid\":\"{0}\",", SALE_GUID));

postData.AppendLine(string.Format("\"supid\":{0},", supid));

postData.AppendLine(string.Format("\"prority\":{0}", priority.ToString().ToLower()));

postData.AppendLine("}");

ASCIIEncoding ascii = new ASCIIEncoding();

byte[] postBytes = ascii.GetBytes(postData.ToString());

string url = Properties.Settings.Default.ISAPIAddress + "deliverynote/create";

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

request.Method = "POST";

request.ContentType = "application/json";

request.ContentLength = postBytes.Length;

Stream postStream = request.GetRequestStream();

postStream.Write(postBytes, 0, postBytes.Length);

postStream.Flush();

postStream.Close();

return request.GetResponse();

}

这是我的javascript:

$.ajax({

url: '../Shipping/ShippingDownloadDNPriority?SALE_GUID=XXXXXXXXXXXXXX',

data: { SALE_GUID: DropShipping.GetRowKey(rowIndexSale) },

async: false,

//success: function (data) { window.downloadFile = data; }

});

谢谢大家

回答:

我改变了主意。我只是简单地以64为基础发送pdf(从我的控制器)并在ajax中进行制作:

success: function (data) {

window.open("data:application/pdf;base64," + data.data, '_blank');

}

以上是 从ajax和ActionResult下载文件 的全部内容, 来源链接: utcz.com/qa/412384.html

回到顶部