下面是一个生成excel的接口,我直接在浏览器上请求接口,会直接叫我下载一个excel文件。
public function index() { $spreadsheet = new Spreadsheet(); $sheet = $spreadsheet->getActiveSheet(); // 设置单元格的值 foreach ($this->tableHeader as $k=>$v){ $chr=chr(65+$k); $sheet->setCellValue($chr."1", $v); } foreach ($this->tableData as $k=>$v){ $vArr=array_values($v); foreach (array_keys($v) as $k2=>$v2){ $chr2=chr(65+$k2).($k+2); $sheet->setCellValue($chr2, $vArr[$k2]); } } // 保存Excel文件到临时目录 $writer = new Xlsx($spreadsheet); $tempFilename = tempnam(sys_get_temp_dir(), $this->fileName); $writer->save($tempFilename); // 设置HTTP头信息,提供文件下载 header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header("Content-Disposition: attachment;filename=$this->fileName.xlsx"); header('Cache-Control: max-age=0'); // 读取临时文件并输出到浏览器 $file = fopen($tempFilename, 'rb'); fpassthru($file); fclose($file); // 删除临时文件 unlink($tempFilename); }
但是我现在需要用ajax接受这个文件然后再下载。但是下面的一直提示:
$.ajax({ url: "/portal/AdminLog/homeExcel", type: 'POST', dataType: 'json', xhrFields: { responseType: 'blob' // 设置响应类型为JSON }, data: { "startTime":$('input[name="startTime"]').val(), "endTime":$('input[name="endTime"]').val() }, success: function (blob, status, xhr) { console.log("成功") // 创建一个指向 Blob URL 的链接 var url = window.URL.createObjectURL(blob); // 创建一个新的 a标签用于下载 var a = document.createElement('a'); a.href = url; a.download = 'filename.ext'; // 设置下载文件的名称 // 触发下载 document.body.appendChild(a); a.click(); // 清理 window.URL.revokeObjectURL(url); document.body.removeChild(a); }, error: function () { console.log("失败") }, complete: function () { console.log("完成") } });
The value is only accessible if the object's 'responseType' is''
or'text'
(was'blob'
).
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
把 Content-Type 设成 application/octet-stream
jQuery 版本太老了,v3.x 之前不支持 Blob、ArrayBuffer,居然还在用 1.12。
要么升级,要么别用 $.ajax 而是自己单独写个方法。
本文向大家介绍使用Ajax生成的Excel文件并下载的实例,包括了使用Ajax生成的Excel文件并下载的实例的使用技巧和注意事项,需要的朋友参考一下 很久沒有寫文章啦,今天分享一個如何在ASP.NET MVC里使用Ajax下載生成文件的方法,以下只是個人心得: 大家都應該知道,在ASP.NET MVC里,如果通過Ajax調用后臺控制器時,可以返回一個JSON對象,但并不能直接返回文件(除非刷新頁
php 使用 Browsershot 生成pdf文件 报如下错误怎么处理 [0] ProcessFailedException in Browsershot.php line 752 The command "node ^"D:^\phpstudy_pro^\WWW^\gyl^\vendor^\spatie^\browsershot^\src/../bin/browser.js^" ^"^{^^"
本文向大家介绍怎么引入(调用)一个JS文件,包括了怎么引入(调用)一个JS文件的使用技巧和注意事项,需要的朋友参考一下 我们旺旺需要调用别的 js文件。怎么处理? 看随机抽取这个例子。在一个页面中如下: 我们可以把 js 放在另外一个文件里,比如当前文件夹的 a.js 中。 这样 html 页面如下: a.js 这样就行了。 当然,也可以把 a.js放在web上,然后引用成下面这样。 以上所述是小
问题内容: json.php代码 我必须生成文件。 问题答案: 这是一个示例代码:
我有一个开关声明,它检查提交的文本中是否存在特定的字符串。 通常,我会创建专用的文件来处理每个的POST数据。 但是如何在一个中处理多个POST。 对于每个ajax数据,我都包含了一个唯一的标识符,这将作为PHP接收到的ajax的参考 但我不确定如何正确地编写PHP代码来处理提交的$_POST类型。
本文向大家介绍怎么下载一个zip文件?相关面试题,主要包含被问及怎么下载一个zip文件?时的应答技巧和注意事项,需要的朋友参考一下 a标签加属性 文件流的方式 注意:Bolb的方式构建完 blob 对象后才会转换成文件,所以尽量使用a标签的形式进行下载