简单的问题.我在我的mojolicIoUs应用程序中生成了一个.doc文件.我想下载它.这是我的问题,如何让浏览器下载它?
我正在使用CPAN模块MsOffice::Word::HTML::Writer来生成文档.
这是我的mojolicIoUs应用程序中的子例程,它由Jquery中的Ajax请求调用:
sub down_doc {
my $self = shift;
my $doc = MsOffice::Word::HTML::Writer->new(
title => "My new Doc",
WordDocument => {View => 'Print'},
);
$doc->write("Content and Stuff");
my $save = $doc->save_as("/docs/file.doc");
$self->res->headers->content_disposition("attachment;filename=file.doc");
$self->res->headers->content_type('application/msword');
$self->render(data => $doc->content);
}
这是我在Jquery中的Ajax请求:
var request = $.ajax({
url: "/down_doc",
type: "post",
data: {'data': data},
});
request.done(function(response, textStatus, jqXHR) {
window.location.href = response;
});
我知道我的Ajax“完成”处理程序是错误的,我只是在试验.如何让我的网页提示保存并下载.doc文件?
解决方法:
这在服务器端确实不是问题,而是在不使用(相对较新的)File API的情况下无法保存来自ajax请求的响应.我建议用临时形式替换ajax:
$('<form method="post" action="/down_doc">')
.append(
$('<input type="hidden" name="data">')
.attr("value", JSON.stringify(data))
)
.appendTo('body')
.submit();
提交表单并且/ down_doc处理程序使用相应的content-disposition标头和文档数据进行回复时,浏览器将执行处理文件保存的工作.
my $save = $doc->save_as("/docs/file.doc");
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。