Pat*_*k D 5 javascript c# asp.net ajax ashx
我有一个带有IHttpHandler的ashx文件.当我将一些数据发布到此IHttpHandler时,我会做一些工作,创建一个文件,然后将该文件返回给用户,以便他们可以通过浏览器保存文件.
创建文件后,我将尝试将文件写回响应:
HttpResponse response = context.Response;
response.ClearContent();
response.Clear();
response.ContentType = "application/octet-stream";
response.AddHeader("Content-Disposition", "attachment; filename=MYFILE.EXT");
response.WriteFile("C:\tempstuff\MYFILE.EXT");
Run Code Online (Sandbox Code Playgroud)
在稍后的块中,我将打电话给:
response.End()
Run Code Online (Sandbox Code Playgroud)
当我打电话给这个Handler时,没有任何反应.返回响应200,不抛出任何错误 - 但浏览器不会提示用户保存此文件.
以下是Fiddler捕获的响应:
HTTP/1.1 200 OK
Server: ASP.NET Development Server/10.0.0.0
Date: Thu, 23 Aug 2012 12:12:19 GMT
X-AspNet-Version: 4.0.30319
Content-Disposition: attachment; filename=MYFILE.EXT
Cache-Control: private
Content-Type: application/octet-stream
Content-Length: 781053
Connection: Close
[raw content of the file here]
Run Code Online (Sandbox Code Playgroud)
这个回答对我来说是正确的.它包含文件的内容 - 但是在任何主流浏览器下,没有文件对话框提示我保存文件.
我在这做错了什么?
更新:如果它有帮助,这里是我从我的Web应用程序使用JavaScript调用此HttpHandler的地方.
$.ajax({
type: 'POST',
url: ashxUrl,
data: postData,
success: function (result) {
// Doin' stuff on success
},
error: function (error) {
// Doin' stuff on error.
}
});
Run Code Online (Sandbox Code Playgroud)
您说过您希望将网络调用的结果提供给您的 JavaScript。如果这导致浏览器提示您保存它,那就非常烦人了,因为那样所有 AJAX 都将不可能实现。
您希望浏览器本身进行调用。对于 GET 这将是一个简单的设置问题self.location.href。对于 POST,最简单的方法通常是用数据填写隐藏表单,然后submit()填写。
| 归档时间: |
|
| 查看次数: |
3414 次 |
| 最近记录: |