从ajax resposne下载二进制文件

时间:2019-05-12 20:27:45

标签: php jquery html ajax

我有一个使用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));

0 个答案:

没有答案