FUDforum
Fast Uncompromising Discussions. FUDforum will get your users talking.

Home » Imported messages » comp.lang.php » ZIP file download
Show: Today's Messages :: Polls :: Message Navigator
Switch to threaded view of this topic Create a new topic Submit Reply
ZIP file download [message #175812] Thu, 27 October 2011 10:29 Go to next message
JustWondering is currently offline  JustWondering
Messages: 9
Registered: April 2011
Karma: 0
Junior Member
I am trying to write a script to download a zip file. Here's what I
have:

header("Cache-Control: no-store, no-cache");
header("Content-Description: File Transfer");
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename="zipfile.zip");
header("Content-Transfer-Encoding: binary");

$outstream = fopen("php://output",'w');

$file = fopen("myfile.zip","rb");
if ($file) {
while(!feof($file)) {
fwrite($outstream, fread($file, 2048));
}
fclose($file);
}
fclose($outstream);

When I run the script, I get a dialog box asking me to save the file.
The file is saved fine, but I cannot open it from the Windows Explorer
(Windows tells that the compressed file is invalid). 7Zip however has
no problem opening it and extracting the files. Any ideas?
Re: ZIP file download [message #175813 is a reply to message #175812] Thu, 27 October 2011 10:32 Go to previous messageGo to next message
Derek Turner is currently offline  Derek Turner
Messages: 48
Registered: October 2010
Karma: 0
Member
On Thu, 27 Oct 2011 03:29:35 -0700, JustWondering wrote:

> I cannot open it from the Windows Explorer
> (Windows tells that the compressed file is invalid). 7Zip however has no
> problem opening it and extracting the files. Any ideas?

What did you use to create myfile.zip? Can windows explorer open that?
Re: ZIP file download [message #175814 is a reply to message #175813] Thu, 27 October 2011 10:47 Go to previous messageGo to next message
JustWondering is currently offline  JustWondering
Messages: 9
Registered: April 2011
Karma: 0
Junior Member
On Oct 27, 3:32 am, Derek Turner <frde...@cesmail.net> wrote:
> On Thu, 27 Oct 2011 03:29:35 -0700, JustWondering wrote:
>> I cannot open it from the Windows Explorer
>> (Windows tells that the compressed file is invalid). 7Zip however has no
>> problem opening it and extracting the files. Any ideas?
>
> What did you use to create myfile.zip? Can windows explorer open that?

I used PHP's zipArchive. Windows explorer can open the file.
Re: ZIP file download [message #175815 is a reply to message #175813] Thu, 27 October 2011 10:49 Go to previous messageGo to next message
JustWondering is currently offline  JustWondering
Messages: 9
Registered: April 2011
Karma: 0
Junior Member
On Oct 27, 3:32 am, Derek Turner <frde...@cesmail.net> wrote:
> On Thu, 27 Oct 2011 03:29:35 -0700, JustWondering wrote:
>> I cannot open it from the Windows Explorer
>> (Windows tells that the compressed file is invalid). 7Zip however has no
>> problem opening it and extracting the files. Any ideas?
>
> What did you use to create myfile.zip? Can windows explorer open that?

I should also add that I'm using Windows 7, and FireFox.
Re: ZIP file download [message #175816 is a reply to message #175812] Thu, 27 October 2011 12:07 Go to previous messageGo to next message
alvaro.NOSPAMTHANX is currently offline  alvaro.NOSPAMTHANX
Messages: 277
Registered: September 2010
Karma: 0
Senior Member
El 27/10/2011 12:29, JustWondering escribió/wrote:
> I am trying to write a script to download a zip file. Here's what I
> have:
>
> header("Cache-Control: no-store, no-cache");
> header("Content-Description: File Transfer");
> header("Content-Type: application/octet-stream");
> header("Content-Disposition: attachment; filename="zipfile.zip");

You have an unmatched quote so I guess this is not the literal code your
are running. Make sure that the real code does not add bogus white-space
before of after the file. You can test that if you open the file in an
hexadecimal editor (though a regular editor may do the trick).

You can end up with a bogus byte if you've saved the PHP source as UTF-8
and your editor is configured to write the Unicode BOM (byte-order marker).


> header("Content-Transfer-Encoding: binary");
>
> $outstream = fopen("php://output",'w');
>
> $file = fopen("myfile.zip","rb");
> if ($file) {
> while(!feof($file)) {
> fwrite($outstream, fread($file, 2048));
> }
> fclose($file);
> }
> fclose($outstream);
>
> When I run the script, I get a dialog box asking me to save the file.
> The file is saved fine, but I cannot open it from the Windows Explorer
> (Windows tells that the compressed file is invalid). 7Zip however has
> no problem opening it and extracting the files. Any ideas?




--
-- http://alvaro.es - Álvaro G. Vicario - Burgos, Spain
-- Mi sitio sobre programación web: http://borrame.com
-- Mi web de humor satinado: http://www.demogracia.com
--
Re: ZIP file download [message #175818 is a reply to message #175816] Thu, 27 October 2011 13:39 Go to previous messageGo to next message
JustWondering is currently offline  JustWondering
Messages: 9
Registered: April 2011
Karma: 0
Junior Member
On Oct 27, 5:07 am, "Álvaro G. Vicario"
<alvaro.NOSPAMTH...@demogracia.com.invalid> wrote:
> El 27/10/2011 12:29, JustWondering escribió/wrote:
>
>> I am trying to write a script to download a zip file. Here's what I
>> have:
>
>>      header("Cache-Control: no-store, no-cache");
>>      header("Content-Description: File Transfer");
>>      header("Content-Type: application/octet-stream");
>>      header("Content-Disposition: attachment; filename="zipfile..zip");
>
> You have an unmatched quote so I guess this is not the literal code your
> are running. Make sure that the real code does not add bogus white-space
> before of after the file. You can test that if you open the file in an
> hexadecimal editor (though a regular editor may do the trick).
>
> You can end up with a bogus byte if you've saved the PHP source as UTF-8
> and your editor is configured to write the Unicode BOM (byte-order marker).
>
>
>
>
>
>
>
>
>
>>      header("Content-Transfer-Encoding: binary");
>
>>      $outstream = fopen("php://output",'w');
>
>>      $file = fopen("myfile.zip","rb");
>>      if ($file) {
>>        while(!feof($file)) {
>>            fwrite($outstream, fread($file, 2048));
>>        }
>>        fclose($file);
>>      }
>>      fclose($outstream);
>
>> When I run the script, I get a dialog box asking me to save the file.
>> The file is saved fine, but I cannot open it from the Windows Explorer
>> (Windows tells that the compressed file is invalid). 7Zip however has
>> no problem opening it and extracting the files. Any ideas?
>
> --
> --http://alvaro.es- Álvaro G. Vicario - Burgos, Spain
> -- Mi sitio sobre programación web:http://borrame.com
> -- Mi web de humor satinado:http://www.demogracia.com
> --

In the real code, U have a variable where the file names are. I
replaced that with actual file names to avoid any confusion. I guess
in the process I messed up the quotes.

In any case, I opened up the downloaded file in a binary editor and
found that the entire HEAD section is added upfront (names of style
sheets, description, etc.). How do I prevent this from happening?
Re: ZIP file download [message #175821 is a reply to message #175818] Thu, 27 October 2011 16:59 Go to previous messageGo to next message
JustWondering is currently offline  JustWondering
Messages: 9
Registered: April 2011
Karma: 0
Junior Member
On Oct 27, 6:39 am, JustWondering <eastside...@gmail.com> wrote:
> On Oct 27, 5:07 am, "Álvaro G. Vicario"
>
>
>
>
>
>
>
>
>
> <alvaro.NOSPAMTH...@demogracia.com.invalid> wrote:
>> El 27/10/2011 12:29, JustWondering escribió/wrote:
>
>>> I am trying to write a script to download a zip file. Here's what I
>>> have:
>
>>>      header("Cache-Control: no-store, no-cache");
>>>      header("Content-Description: File Transfer");
>>>      header("Content-Type: application/octet-stream");
>>>      header("Content-Disposition: attachment; filename="zipfile.zip");
>
>> You have an unmatched quote so I guess this is not the literal code your
>> are running. Make sure that the real code does not add bogus white-space
>> before of after the file. You can test that if you open the file in an
>> hexadecimal editor (though a regular editor may do the trick).
>
>> You can end up with a bogus byte if you've saved the PHP source as UTF-8
>> and your editor is configured to write the Unicode BOM (byte-order marker).
>
>>>      header("Content-Transfer-Encoding: binary");
>
>>>      $outstream = fopen("php://output",'w');
>
>>>      $file = fopen("myfile.zip","rb");
>>>      if ($file) {
>>>        while(!feof($file)) {
>>>            fwrite($outstream, fread($file, 2048));
>>>        }
>>>        fclose($file);
>>>      }
>>>      fclose($outstream);
>
>>> When I run the script, I get a dialog box asking me to save the file.
>>> The file is saved fine, but I cannot open it from the Windows Explorer
>>> (Windows tells that the compressed file is invalid). 7Zip however has
>>> no problem opening it and extracting the files. Any ideas?
>
>> --
>> --http://alvaro.es-Álvaro G. Vicario - Burgos, Spain
>> -- Mi sitio sobre programación web:http://borrame.com
>> -- Mi web de humor satinado:http://www.demogracia.com
>> --
>
> In the real code, U have a variable where the file names are. I
> replaced that with actual file names to avoid any confusion. I guess
> in the process I messed up the quotes.
>
> In any case, I opened up the downloaded file in a binary editor and
> found that the entire HEAD section is added upfront (names of style
> sheets, description, etc.). How do I prevent this from happening?

Problem solved. Here's what I did:

header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-
check=0");
header("Content-Description: File Transfer");
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"targetfile.zip
\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . filesize('sourcefile.zip'));
ob_clean();
flush();
readfile ('sourcefile.zip');
Re: ZIP file download [message #175824 is a reply to message #175821] Thu, 27 October 2011 21:54 Go to previous message
Jerry Stuckle is currently offline  Jerry Stuckle
Messages: 2598
Registered: September 2010
Karma: 0
Senior Member
On 10/27/2011 12:59 PM, JustWondering wrote:
> On Oct 27, 6:39 am, JustWondering<eastside...@gmail.com> wrote:
>> On Oct 27, 5:07 am, "Álvaro G. Vicario"
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> <alvaro.NOSPAMTH...@demogracia.com.invalid> wrote:
>>> El 27/10/2011 12:29, JustWondering escribió/wrote:
>>
>>>> I am trying to write a script to download a zip file. Here's what I
>>>> have:
>>
>>>> header("Cache-Control: no-store, no-cache");
>>>> header("Content-Description: File Transfer");
>>>> header("Content-Type: application/octet-stream");
>>>> header("Content-Disposition: attachment; filename="zipfile.zip");
>>
>>> You have an unmatched quote so I guess this is not the literal code your
>>> are running. Make sure that the real code does not add bogus white-space
>>> before of after the file. You can test that if you open the file in an
>>> hexadecimal editor (though a regular editor may do the trick).
>>
>>> You can end up with a bogus byte if you've saved the PHP source as UTF-8
>>> and your editor is configured to write the Unicode BOM (byte-order marker).
>>
>>>> header("Content-Transfer-Encoding: binary");
>>
>>>> $outstream = fopen("php://output",'w');
>>
>>>> $file = fopen("myfile.zip","rb");
>>>> if ($file) {
>>>> while(!feof($file)) {
>>>> fwrite($outstream, fread($file, 2048));
>>>> }
>>>> fclose($file);
>>>> }
>>>> fclose($outstream);
>>
>>>> When I run the script, I get a dialog box asking me to save the file.
>>>> The file is saved fine, but I cannot open it from the Windows Explorer
>>>> (Windows tells that the compressed file is invalid). 7Zip however has
>>>> no problem opening it and extracting the files. Any ideas?
>>
>>> --
>>> --http://alvaro.es-Álvaro G. Vicario - Burgos, Spain
>>> -- Mi sitio sobre programación web:http://borrame.com
>>> -- Mi web de humor satinado:http://www.demogracia.com
>>> --
>>
>> In the real code, U have a variable where the file names are. I
>> replaced that with actual file names to avoid any confusion. I guess
>> in the process I messed up the quotes.
>>
>> In any case, I opened up the downloaded file in a binary editor and
>> found that the entire HEAD section is added upfront (names of style
>> sheets, description, etc.). How do I prevent this from happening?
>
> Problem solved. Here's what I did:
>
> header("Pragma: public");
> header("Expires: 0");
> header("Cache-Control: must-revalidate, post-check=0, pre-
> check=0");
> header("Content-Description: File Transfer");
> header("Content-Type: application/octet-stream");
> header("Content-Disposition: attachment; filename=\"targetfile.zip
> \"");
> header("Content-Transfer-Encoding: binary");
> header("Content-Length: " . filesize('sourcefile.zip'));
> ob_clean();
> flush();
> readfile ('sourcefile.zip');

It's much easier than that. Just don't put a HEAD section in there.

<HEAD> is for (X)HTML. You are sending a zip file. Not at all the same
thing.

Your script should ONLY contain (starting on line 1):

<?php
header(...)
etc. ...
readfile('sourcefile.zip')
?>



--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex(at)attglobal(dot)net
==================
  Switch to threaded view of this topic Create a new topic Submit Reply
Previous Topic: Simple PHP script - VMS problem
Next Topic: Standard practice: login pages
Goto Forum:
  

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ]

Current Time: Tue Nov 26 23:41:26 GMT 2024

Total time taken to generate the page: 0.01911 seconds