2010-04-15 26 views
3

我上傳文件(PDF現在)這樣的:(據上傳MySQL中的BLOB字段文件的內容)的Zend/PHP:問題上傳/從MySQL的BLOB字段下載文件到/

$organizationModel = new Model_Organization_Object(organizationId); 
$myFile = file_get_contents('../path/to/my/file/filename.ext'); 
$organizationModel->setOrganizationProfile($myFile); 
$organizationModel->save(); 

現在我想從數據庫中獲取該文件並想下載。我在控制器的行動這樣做:(我aspecting PDF文件,這裏因此在下面的硬編碼,但在未來,我想下載從BLOB字段的任何文件。)

$organizationModel = new Model_Organization_Object($organizationId); 
$content = $organizationModel->getOrganizationProfile(); 

header('Content-Type: application/octet-stream'); 
header("Content-Length: " . strlen($content)); 
header('Content-Disposition: attachment; filename=orgProfile.pdf'); 

$this->view->organizationProfile = $content; 

現在,在視圖文件我這樣做:

echo $this->organizationProfile; 

但是,以上的下載過程在firbug中打印(回顯)文件的內容並且不會以信號格式下載文件。我在螢火蟲回聲輸出是這樣的:

%PDF-1.3 
%���� 
84 0 obj 
<< 
/Linearized 1 
/O 86 
/H [ 541 212 ] 
/L 958398 
/E 11238 
/N 27 
/T 956600 
>> 
endobj 
                 xref 
84 7 
0000000016 00000 n 
0000000486 00000 n 
0000000753 00000 n 
0000000982 00000 n 
0000001102 00000 n 
0000000541 00000 n 
0000000732 00000 n 
trailer 
<< 
/Size 91 
/Info 83 0 R 
/Root 85 0 R 
/Prev 956590 
/ID[<0a8d7035bf08791da591e8cae39b8c49><0a8d7035bf08791da591e8cae39b8c49>] 
>> 
startxref 
0 
%%EOF 

85 0 obj 
<< 
/Type /Catalog 
/Pages 82 0 R 
>> 
endobj 
89 0 obj 
<< /S 151 /Filter /FlateDecode /Length 90 0 R >> 
stream 
H�b```f``�e`b`�f`@\0�.����\\I~aV$�Xƈ�dǪ����bA�Az�lv1o#�{-����1+�ʪG�����N`�b� 
>�-�� 
\0\0D40 
endstream 
endobj 
90 0 obj 
106 
endobj 
86 0 obj 
<< 
/Type /Page 
/Contents 87 0 R 
/Parent 79 0 R 
/Resources << /XObject << /img0 88 0 R >> /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> 
/MediaBox [ 0 0 612 792 ] 
/CropBox [ 0 0 612 792 ] 
/Rotate 0 
>> 
endobj�@.\0��� 
endstream 
endobj 
88 0 obj 
<< /Filter /FlateDecode \0\0\0\0\0\0\0\0\0\\ 
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\\ 
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\\ 
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\\ 
\0\0\0\0\0\0\0\0\0\0\\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\\ 
\0\0\0\0\0\0\0\0|n�FT*,� 
�� 
�j#Q��uT~r:}\\�_؛�ҵ��v��ϭ8Q�&� ���T�S�I\"�(>Y�ܾ����}H��aj�3��u�h�T�X�Z�-~��c\'P�^��d�ם�ߔ?����]_�ڿ�z��O]�q�����7寋�|�mN%�����̖T�����o�ߓ�sUzT���m�v8ͯq� 
��e]�wS���C~Ta���.��[%!������2x]n~�7�Ϫ����6.����K��;c 
}����r�)V�� 
u���*�7�$c\\���m�~���r��)U{�λ�廳˺��ԟ�R�� 
��D1L_����WUog�>��/������ߦ��~�%���M���}\'�� ;���y��K`�����O�,�߫����<�,0���;3 #��m�v���aZ=�N�u�J`��dwnm;��.Ѣ�k�n�K1-M�7����H&��ʨ���s�C?�� 
�}Z�1����c�(0�q�_1��7�%���G7U/��h9I������S�Q��4nc�Lq��H6��;�꺒c(/O��2�٫�-�*_����%�I؏/?�I�o����ô�k��<����q��\'��]v�\"��+�˗ݯ�,��ɏ�qxgk�\\\\�6���7��Y���.G��ҽY��8��.��*���M_��J�hu1����z��W�o_��F�/���s�:�Y~��>0�g\\E�l�K5e���&L�/����k$����{ں:\\>�̥Fs?-��l�>c�亪o���Λ�9�V+�2;��}q�4 
�zS�|u�A`dK���n~�sΛ��K�hiY�j��#p���S�M\\���0P2䗶\\*�m+?L5Er����[W�>9|�̑�iY�u�j�M�_���n&��7O�f��s��z`.`�,W��#�l��n���s�՛\'�����=��&#�z�M7_����s���x��y� 
��u�p�G���0ͨe�G���۸8]{�䓷N�1}��}~Q�[)�XF��_��*? p7iQ����M�(�l���������׏��f��6����*��Ų;@~\\k�i��w_��*�#�Ւ�^�j�\\�L��/�}�Y�[��V��t~�w�n��a���m�O�(.�n;��ji:��W�ZnQ[9�n=�^��sE9��;�.��u3\"ږ��<�Ļ��y8�<H���g��u��\\�q��Ȥ71p�U��}ם��f`�Y��m3b*C�t{�SX��7m<��6��8K��[Qs��&_��(M��:�Z���W��Հ��W寚 
��4d��4�Aڔ�ɪ�lw�e�d�>� 
�pCV��h�ŜS�Z�T��4�NӴ,�� �8=-�%ߜ��4�p�a��~��R눥L羋�=J��j}��ʺ��,�(�x���� 
�]��l�)L��� I8eG#r�dC��;�͹/C���l���rm�ɽ��͆��e�6�M��fP�4�r��)�!�\\sڹ�?{��!cN��h�֗>�� ��o>��m�dO=&<ɻ�P��xΔ=�͌CC?�M��W[ϟ�v<���S14�����\\C�Z 
    ��g��ݡq:�ǔ�C�k�vc�K�;��\"Y͙t�r]��G�z����w���rӹ����ަ0������e�:��/f�*^�W�Q8WsN��9}*ۥ|��~x)�N�=6J�l����M�b��Ƿ���M45�C�k]��r�uߍ�����r 
] 

效應初探頭的螢火:

Date Thu, 15 Apr 2010 06:21:03 GMT 
Server Apache/2.2.11 (Ubuntu) PHP/5.2.6-3ubuntu4.2 with Suhosin-Patch 
X-Powered-By PHP/5.2.6-3ubuntu4.2 
Expires Thu, 19 Nov 1981 08:52:00 GMT 
Cache-Control no-store, no-cache, must-revalidate, post-check=0, pre-check=0 
Pragma no-cache 
Content-Length 65535 
Content-Disposition attachment; filename=evidence.pdf 
Keep-Alive timeout=15, max=71 
Connection Keep-Alive 
Content-Type application/octet-stream 

誰能幫那如何下載文件或我做錯了上傳視頻的過程。 setOrganizationProfile()和getOrganizationProfile()函數是由我們的團隊創建的,這些團隊在向/從數據庫存儲數據/從數據庫獲取數據時工作正常。

謝謝

+0

在Firebug? 你如何調用'load'?你點擊一個鏈接或嘗試使用一些AJAX調用?如果AJAX--你使用的是什麼JS框架? Firebug的 - 什麼是響應頭? – 2010-04-15 07:51:48

+0

我正在使用AJAX/jQuery。當我點擊下載鏈接時,會發出ajax請求,並調用啓動下載過程的操作。問題中添加了標題響應。 – NAVEED 2010-04-15 07:56:28

回答

1

好的,我認爲你的問題是你使用AJAX下載文件。

這是不可能下載使用AJAX(或者更確切地說 - JS)文件中的一個正常的方式。你知道,漏洞的漏洞太大(我認爲是這樣) - 反正沒有這種可能性。

雖然有解決方法。其中之一是在頁面上動態創建隱藏的iframe,然後將其位置更改爲您的下載腳本。那麼你不用JS來下載,而是使用普通的瀏覽器功能。

另一種方式是在本頁面描述:

http://www.filamentgroup.com/lab/jquery_plugin_for_requesting_ajax_like_file_downloads/

Mybe它會成爲你的幫助。

+0

是的,我在沒有AJAX的情況下單獨打開下載鏈接,現在正在下載。 – NAVEED 2010-05-05 05:37:25

0

你想要的內容類型是應用程序/ PDF不是應用/八位字節流。這將呈現PDF文件而不是顯示它的「來源」。

乾杯