流式传输文档数据后链接未打开
Posted
技术标签:
【中文标题】流式传输文档数据后链接未打开【英文标题】:Link not opening after streaming data of the document down 【发布时间】:2015-10-21 19:53:05 【问题描述】:我想我在 javascript 方面遗漏了一些代码。我正在下载每个请求的文件。当用户单击链接时,我会获取文档数据并将其流式传输。我在 Fiddler 上看到数据正在下降,但 .txt 文档链接未打开。
[HttpGet]
public HttpResponseMessage GetDataFiles(Int64 Id)
var results = context.PT_MVC_RequestFile.Where(x => x.RowId == Id).FirstOrDefault();
HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
try
if (results != null)
response.Headers.AcceptRanges.Add("bytes");
response.StatusCode = HttpStatusCode.OK;
response.Content = new ByteArrayContent(results.Data);
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
response.Content.Headers.ContentDisposition.FileName = results.FileName;
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
response.Content.Headers.ContentLength = results.Data.Length;
catch (EntityException ex)
throw new EntityException("GetFiles Failed" + ex.Message);
return response;
首先,我下载了该请求的所有文档,如果用户单击该文件,我将调用下载流操作。
$.ajax(
url: url,
type: 'GET',
// data: JSON.stringify(model, null),
contentType: "application/json",
success: function (data)
if (data != "")
$("#fileLength").val(data.length);
// alert(data.length);
$.each(data, function (i, item)
var newDiv = $(document.createElement('div')).attr("id", 'file' + i);
newDiv.html("<input id=\"cb" + i + "\" type=\"checkbox\"> <a href=\"#\" onclick=\"GetData('" + item.RowId + "','" + item.mineType + "')\" >" + item.FileName + "</a>");
newDiv.appendTo("#fileRows");
);
else
,
error: function (xhr, ajaxOptions, thrownError)
);
我认为我在成功后遗漏了一些东西。不知何故,它下载了数据,但链接没有打开。可能是没有设置内容类型,或者它认为它是 JSON 数据?请提供一些想法。
这是链接:
function GetData(rowId,mineType)
// alert(mineType);
var url = "api/MyItemsApi/GetDataFiles/" + rowId;
$.ajax(
url: url,
type: 'GET',
//data: JSON.stringify(model, null),
contentType: "application/json",
success: function (data)
,
error: function (xhr, ajaxOptions, thrownError)
);
【问题讨论】:
HTTP/1.1 200 OK Cache-Control: no-cache Pragma: no-cache Content-Length: 6429 Content-Type: application/txt Expires: -1 Accept-Ranges: bytes 服务器: Microsoft- IIS/8.0 内容处置:附件;文件名= Bare.txt X-ASPNET-版本:4.0.30319 X-SourceFiles:= UTF-8乙QzpcVXNlcnNcYzBhYmRnZVxEb2N1bWVudHNcVmlzdWFsIFN0dWRpbyAyMDEyXFByb2plY3RzXFByb2plY3QuVHJhY2tlci5XZWIuU29sdXRpb25cUHJvamVjdC5UcmFja2VyLldlYlxhcGlcTXlJdGVtc0FwaVxHZXREYXRhRmlsZXNcMQ == = X供电-通过:????ASP.NET日期:星期四,2015年7月30日13时33分:46 GMT 这是标题中的内容,我将其更改为 txt 但仍然没有运气 【参考方案1】:您无法通过 Ajax 请求轻松下载文件。我建议将数据从表单发布到空白页面,而不是 Ajax(如果需要,您可以填充该表单并通过 jQuery 发布)。如果您有兴趣,我可以指导您完成,请告诉我。
如果你还想从 Ajax 下载,我建议你参考this 的帖子。
【讨论】:
以上是关于流式传输文档数据后链接未打开的主要内容,如果未能解决你的问题,请参考以下文章
如何创建链接到 Web 资源的 Mediafile,以便将资源流式传输?
Databricks:未找到 Azure 队列存储结构化流式传输密钥错误
在 Windows 7 上通过 QTcpSocket 流式传输图像