Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何下载带有改装2的pdf文件_Php_Android_File_Retrofit2 - Fatal编程技术网

Php 如何下载带有改装2的pdf文件

Php 如何下载带有改装2的pdf文件,php,android,file,retrofit2,Php,Android,File,Retrofit2,我在下载带有改装的pdf文件时遇到困难。我的代码生成一个文件,但大小不正确,打开pdf时为空 这就是我的php Web服务返回pdf文件的方式 ** * @param Slim\Slim $app * @param String $pdf */ function respondWithPDF($app, $pdf) { $res = $app->response(); $res['Content-Description'] = 'File Transfer';

我在下载带有改装的pdf文件时遇到困难。我的代码生成一个文件,但大小不正确,打开pdf时为空

这就是我的php Web服务返回pdf文件的方式

**
 * @param Slim\Slim $app
 * @param String $pdf
 */
function respondWithPDF($app, $pdf) {
    $res = $app->response();
    $res['Content-Description'] = 'File Transfer';
    $res['Content-Type'] = 'application/octet-stream';
    $res['Content-Disposition'] ='attachment; filename=' . basename($pdf);
    $res['Content-Transfer-Encoding'] = 'binary';
    $res['Expires'] = '0';
    $res['Cache-Control'] = 'must-revalidate';
    $res['Pragma'] = 'public';
    $res['Content-Length'] = filesize($pdf);
    readfile($pdf);
}
如果我通过浏览器导航到api端点,pdf文件会立即下载

这是我用来在Android中下载pdf文件的代码

private boolean writeResponseBodyToDisk(ResponseBody body, String fileName) {

    try {

        File futureStudioIconFile = new File(mContext.getExternalCacheDir() + File.separator + fileName);

        InputStream inputStream = null;
        OutputStream outputStream = null;

        try {
            byte[] fileReader = new byte[4096];

            long fileSize = body.contentLength();
            long fileSizeDownloaded = 0;

            inputStream = body.byteStream();
            outputStream = new FileOutputStream(futureStudioIconFile);

            while (true) {
                int read = inputStream.read(fileReader);

                if (read == -1) {
                    break;
                }

                outputStream.write(fileReader, 0, read);

                fileSizeDownloaded += read;

                Log.d(Constants.LOG_TAG, "file download: " + fileSizeDownloaded + " of " + fileSize);
            }

            outputStream.flush();

            return true;
        } catch (IOException e) {
            return false;
        } finally {
            if (inputStream != null) {
                inputStream.close();
            }

            if (outputStream != null) {
                outputStream.close();
            }
        }
    } catch (IOException e) {
        return false;
    }
}
我已经记录了http响应。以下是我在pdf中得到的回复

D:╔════════════════════════════════════════════════════════════════════════════════════════
D:║ 线程:OkHttphttps://192.168.1.15/mamobile/index.php/report/activity?startDate=3916-08-15%2000:00:00.000&endDate=3916-02-01%2000:00:00.000
D:╟────────────────────────────────────────────────────────────────────────────────────────
D:║ 调用$ApplicationInterceptorChain.procedure(Call.java:232)
D:║    ApiClient$LoggingInterceptor.intercept(ApiClient.java:247)
D:╟────────────────────────────────────────────────────────────────────────────────────────
D:║ 响应
D:║ 收到对的答复https://192.168.1.15/mamobile/index.php/report/activity?startDate=3916-08-15%2000:00:00.000&endDate=3916-02-01%2000:00:00.000,5190.8毫秒
D:║ 缓存控制:必须重新验证
D:║ 布拉格语:公共
D:║ 内容长度:60942
D:║ 内容类型:应用程序/八位字节流
D:║ 过期日期:0
D:║ 服务器:Microsoft IIS/10.0
D:║ X-Powered-By:PHP/5.4.24
D:║ 内容描述:文件传输
D:║ 内容处置:附件;filename=活动报告.pdf
D:║ 内容传输编码:二进制
D:║ X-Powered-By:ASP.NET
D:║ 日期:2016年7月20日星期三格林尼治标准时间16:52:17
D:║ OkHttp发送的邮件:146903539269
D:║ OkHttp收到的毫秒数:1469033544169
D:║ 
D:║ %PDF-1.3
D:║ %���� 
D:║ 10 obj
D:║  
D:║ >> 
D:║ endobj
D:║ 50 obj
D:║ > 
D:║ 流动
D:║ v�X����:`��)��05~�Z��gղZ?U+�智商�A.����+@�L��l1�9��~v����X�]���我�0��=�ěg���o'@���)[P�2l��z\��jwL�}����Bk���Q��J^�;�~苏氨酸�ړ�������>在�d1K*։w��C�]�哦��N�N��我�� {�R�v�.���;�G*[��4.�\L��6.�˰�_�\��Љ�/�V6^�����铬*�f|
D:║ ����B'����2.�G�J��v�艾尔!�
D:║ ��~复写的副本����Q��B�1.�V1��+` 
D:║ 流动
D:║ ���������]U�r}�a> ǁ�
D:║ 54����Q��DY“v�2.���|t-�/@JN@��N���]R��我�����OD;�J�J、 B��Q�W��
D:║ �&��f؇������lԃ��v���`?\�[�}�A.�E�~0p�N�K�迀4.�`�л�����Q������7.�[H]�9�����=>"5.����]=��O���=qz���`F���|��W�
D:║ �
D:║ R�ڔ�E�6{ѢcL��R8J�!��M�_C[8��Q� �}�]
D:║ }�弗吉尼亚州�0B&���!��¨:�F�R(��乌尔���R��#2.��"��!+�E�F�Sԧ%XA�51u�N�\홅�fz��O�蜡{���Pݤ�!��.!1!Z��
D:║ *交流电��X�#[�-jc���[整箱��Y��,�T��@U�P��   �R��    ،�-����F���F�j> m�3秒�,�=�B3kv8Wv$�R�h(�A.�D��9�C��rrU�K�s���U���b=� ��|�������A.���'�WzG�$�ʑ�rR���?��!l>��?�aF�Z=���OY7٫��W�?ҝ8�U�Q���U(�㐎G��u4-GA�2.����Z��ڝ(
D:║ �zס����O�}�O��¿���;�+�Y�P������� �D��H�U=����
D:║ ��F�C�[���났`�转速\����%�+����E�T�y(\�6\�Ԫ��
D:║ ���
D:║ �*A.�顾ꇫ�U�
D:║ �r7���U�J�9����我��~VNN&q����M����[ �%}϶5^��G��7.���D˲�kh
D:║ B) 三十六��B(䆜足球俱乐部��ܗ���щ�C�N�G���1.�
D:║ 安永��ד��=^��/@t`�1.
D:║ �,���S0hGE���P�ԩS\�S_?
D:║ (�������ä���=��;��[�R���ä����燃气轮机��3#jϔ��M�v�#T���T��v�_�\�̗����v�|�>� ���P�Z��s�K�oA=T��(U)�:��@��ā�̕u����1.�加尔(K)����y8+��Q�1.���3.�E����R�J�v��8j�E�U��1.�Sy�\���qRq�    e9Q�M���7VĿ��sk�>���.��M�K����Ł;�?\���[O]����۲r�1o�tƎ9�o*'��E�瓦什�X0�A.�+��޴�ɫ���J�~U�R~�

D:║ v���E� �£ȃ�c{ˑ{��,X�基尼����%�E�����D�GnY��D7p���R��?8.���[o]��pF����Z�先生��W���}RZ:!��D���北京��_�C��ǪLcSV^F�- ���$E�JGI��q]��-o��������E��B�C��g++���U��.��Ǖ�]�-�Ҕ~=6��6.�Ϝ��ԓe���*�{�W�是�JXĘ��$�v��电子战��s�#Yz�艾伊�ʧ��=XZ?xo�.�#N=uFf4�kQ!�ƓRF���!̗�W您可以看到以下链接:

设置适当的标题,不要忘记annotation@Streaming。它对我很有效。我用不同类型的文件测试了它,它很有效


我使用的是旧版本的改型和Okhttp。一旦我更新到新版本,它就起作用了。

我已经尝试过了