下载一个带有javascript的url文件,然后打开该文件
我想使用javascript/jquery从服务器下载一个文件 按下按钮时,服务器将响应我要下载的url文件 按钮:下载一个带有javascript的url文件,然后打开该文件,javascript,jquery,Javascript,Jquery,我想使用javascript/jquery从服务器下载一个文件 按下按钮时,服务器将响应我要下载的url文件 按钮: <a class="btn btn-primary" id="exportInvoice">Export XML</a> 我正在使用Laravel5.7Blade生成url 当我点击按钮时,文件将打开而不是下载(因为窗口的原因。location=resp.url 我在想…在ajax调用之后(当成功响应时)…设置下载属性和链接的href…但是我需要再次调用
<a class="btn btn-primary" id="exportInvoice">Export XML</a>
我正在使用Laravel5.7Blade生成url
当我点击按钮时,文件将打开而不是下载(因为窗口的原因。location=resp.url
我在想…在ajax调用之后(当成功响应时)…设置下载属性和链接的href…但是我需要再次调用click事件来下载文件
如何下载打开的文件istead
window.location.href = resp.url
这将在同一页面中开始下载,就像单击除\u self
之外没有任何目标的链接一样
这将在同一页面中开始下载,就像您单击除
\u self
之外没有任何目标的链接时一样创建隐藏表单以下载文件:
隐藏形式:
<form id="downloadXmlForm" method="post" action="{{ route('download-xml-invoices') }}" style="display: none">
<input type="hidden" name="xmlFileName">
<button type="submit" class="btn btn-primary">Export XML</button>
({ csrf_field() }}
</form>
在后端,ajax请求的响应为:
...
$fileName = uniqid().'.xml';
$xmlFilePath = storage_path('invoices/'.$fileName);
file_put_contents($xmlFilePath, $xmlString);
return response()->json(['error' => false, 'msg' => $message, 'fileName' => $fileName]);
表单提交时调用的下载功能:
public function downloadInvoicesXml(Request $request){
return response()->download( storage_path('invoices/'.$request->input('xmlFileName')));
}
如果有人有更好的想法,请告诉我:)创建隐藏表单以下载文件: 隐藏形式:
<form id="downloadXmlForm" method="post" action="{{ route('download-xml-invoices') }}" style="display: none">
<input type="hidden" name="xmlFileName">
<button type="submit" class="btn btn-primary">Export XML</button>
({ csrf_field() }}
</form>
在后端,ajax请求的响应为:
...
$fileName = uniqid().'.xml';
$xmlFilePath = storage_path('invoices/'.$fileName);
file_put_contents($xmlFilePath, $xmlString);
return response()->json(['error' => false, 'msg' => $message, 'fileName' => $fileName]);
表单提交时调用的下载功能:
public function downloadInvoicesXml(Request $request){
return response()->download( storage_path('invoices/'.$request->input('xmlFileName')));
}
如果有人有更好的想法,请告诉我:)AJAX是一个后台请求,您不能从那里直接触发下载对话框。有一些变通方法,但在这种情况下,一开始不使用AJAX可能更有意义。如果您需要向服务器提交POST数据以生成此下载资源,那么您可以使用JS.thx@misorude提交一个隐藏表单以获取信息;)(使用隐藏表单)AJAX是一个后台请求,您不能从那里直接触发下载对话框。有一些变通方法,但在这种情况下,一开始不使用AJAX可能更有意义。如果您需要向服务器提交POST数据以生成此下载资源,那么您可以使用JS.thx@misorude提交一个隐藏表单以获取信息;)(使用隐藏表单)我已经尝试过…同样的效果(将打开文件)强制下载文件,请确保发送正确的标题:内容处置:附件;filename=“mypdf.pdf”;这将确保文件不会显示在浏览器中,而不会被下载。在“另存为”对话框中将文件名部分替换为您想要的默认文件名。我已经尝试过…同样的效果(将打开文件)要强制下载文件,请确保发送正确的标题:内容处置:附件;filename=“mypdf.pdf”;这将确保文件不会显示在浏览器中,而不会被下载。在“另存为”对话框中将文件名部分替换为默认文件名。