我有一个使用JavaScript上传的Excel文件。上传后,我将对其执行一些操作。然后,我根据该数据创建一个新的Excel文件,然后将其进一步下载。
现在一切正常,但是ajax响应返回output
文件的二进制结果。我要下载此文件。 console.log
的结果是:
PK=�N%���a[Content_Types].xml͔]K�0���%��f� "�v��R���kX�����m��+����4�<�'��2�jgs6�,+��v����Sz���*a�����tr5^�=`Bb�9+c����,��9��.T"�kXr/�J,���[.��`ck6�?h�\��,*���ܠ}3�c�C+��9�-E��|c�j�BKPN�+�d��u��O1�
`o�Ba +���G�
�61yܑ{�y���ef�l�`�}���N�6=� �,�-m��ҷ.�ޝ[]��z�*�mע�x�GN���nN�J=YB��k�;��8~�����C�M5țax��?���1�'9n�(�"�z����o�������'PK=�N�78�K_rels/.rels���j�0��{
�{���1F�^ʠ�2��l�$���-}�y����Î��O��v�y�;�؋Ӱ.JP��^�����Yű�3G�Ww�g)���>�qQC��D���b!�]�i$L��3����2n���oT�:Z
�h����[��4�ი��]��yN�,ە�>�>�j
-'
V�)�#��EF^6��n���8q"K��H��>_ׄ����eƏ�<⇄�Ud�v��
T�PK=�Nx����xl/_rels/workbook.xml.rels���j�0��}
��X�ӆR"�R
���im�ؒ��?~��
m����;�1B���гw�sV@����*�;�
x��V��"I�e�,
1®��>c/)�D��Ȓ����<*�����h�M�� )��r/�A���<��0���̓������
$('#subb').on('click', function() {
var file_data = $('#excel_upload').prop('files')[0];
var form_data = new FormData();
form_data.append('file', file_data);
$.ajax({
url: 'processing.php', // point to server-side PHP script
dataType: 'text', // what to expect back from the PHP script, if anything
cache: false,
contentType: false,
processData: false,
data: form_data,
type: 'post',
success: function(data){
var a = document.createElement('a');
var url = data;
a.href = url;
a.download = 'myfile.pdf';
a.click();
window.URL.revokeObjectURL(url);
}
});
});
所以任何将二进制文件转换为excel并进一步下载的想法
编辑1: 所以我解决了。下面是我写的javascript代码
$('#submit_btn').on('click', function() {
var file_data = $('#excel_upload').prop('files')[0];
var form_data = new FormData();
form_data.append('file', file_data);
$.ajax({
url: 'process.php', // point to server-side PHP script
dataType: 'json', // what to expect back from the PHP script, if anything
cache: false,
contentType: false,
processData: false,
data: form_data,
type: 'post',
beforeSend: function() {
$("#submit_btn").html('<img src="https://thumbs.gfycat.com/UnitedSmartBinturong-max-1mb.gif" style="height:20px">');
},
success: function(data){
var a = $("<a>");
a.attr("href",data.file);
$("body").append(a);
a.attr("download","file.xls");
a[0].click();
a.remove();
$("#submit_btn").html('Submit');
}
});
});
在服务器端
$writer->save('php://output');
$xlsData = ob_get_contents();
ob_end_clean();
$response=array('file'=>"data:application/vnd.msexcel;base64,"base64_encode($xlsData));
die(json_encode($response));