954,576 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

Error reading zip

I have this function whereby it allows people to download zip file but then i try to open it after downloading it, there was this error msg that says "Error reading zip".

starsunited
Light Poster
44 posts since Dec 2004
Reputation Points: 11
Solved Threads: 1
 

If you really want help you should post your code, or at least the portion you feel is causing the problem. Offhand it sounds like the zip file on the server has gotten corrupted somehow.

DanceInstructor
Posting Whiz
368 posts since Feb 2005
Reputation Points: 17
Solved Threads: 14
 

[PHP] $zipfile = new zipfile();
$zipfile -> add_dir("files/");
$dir = '../files';

$filename = "testing.mp3";
$pathname = "$dir/$filename";

$fr = fopen($pathname, 'r');
$data = fread($fr, filesize($pathname));

fclose($fr);

$zipfile->add_file($filedata, "files/".$filename);

header("Content-type: application/octet-stream");
header("Content-disposition: attachment; filename=testing.zip");
echo $zipfile->file();


[/PHP]

This is the part i feel is causing the problem. i have a zipfile class which creates zip files

starsunited
Light Poster
44 posts since Dec 2004
Reputation Points: 11
Solved Threads: 1
 

Have you tried:

[PHP]header("Content-type: application/x-zip");[/PHP]

Also, you open the file and put the data into $data. Then you use the class and use the variable $filedata. Should they be the same??

DanceInstructor
Posting Whiz
368 posts since Feb 2005
Reputation Points: 17
Solved Threads: 14
 

Have you tried:

[PHP]header("Content-type: application/x-zip");[/PHP]

Also, you open the file and put the data into $data. Then you use the class and use the variable $filedata. Should they be the same??

oh that, it's the same, i forget to change it because these codes are edited to protect the privacy of the codes.

starsunited
Light Poster
44 posts since Dec 2004
Reputation Points: 11
Solved Threads: 1
 

i try already but cannot still error reading zip but the file was in the downloaded because i see the file size of the zip is the same as the file size of the file.

starsunited
Light Poster
44 posts since Dec 2004
Reputation Points: 11
Solved Threads: 1
 

Hi

You should be using a content length header so the browser does not add \r?\n to the stream buffer...

Also your application-x-type is wrong...

if ( strstr ( strtolower ( $_SERVER['HTTP_USER_AGENT'] ), 'msie 5.5' ) )
{
	$att = '';
}
else
{
	$att = ' attachment;';
}

header ( 'Cache-control: max-age=31536000' );
header ( 'Expires: Mon, 26 Jul 1997 05:00:00 GMT' );
header ( 'Content-Length: ' . filesize ( $filename ) );
header ( 'Content-Type: application/x-zip-compressed; name="' . basename ( $filename ) . '"' );
header ( 'Content-Disposition:' . $att . ' filename="' . basename ( $filename ) . '"' );
header ( 'Content-Transfer-Encoding: binary' );
readfile ( $filename );


demo

demo
Newbie Poster
18 posts since Jan 2005
Reputation Points: 10
Solved Threads: 2
 

so this codes are the correct one then? oh k i will try n see then thanks :cheesy:

starsunited
Light Poster
44 posts since Dec 2004
Reputation Points: 11
Solved Threads: 1
 

Hi

You should be using a content length header so the browser does not add \r?\n to the stream buffer...

Also your application-x-type is wrong...

if ( strstr ( strtolower ( $_SERVER['HTTP_USER_AGENT'] ), 'msie 5.5' ) )
{
	$att = '';
}
else
{
	$att = ' attachment;';
}

header ( 'Cache-control: max-age=31536000' );
header ( 'Expires: Mon, 26 Jul 1997 05:00:00 GMT' );
header ( 'Content-Length: ' . filesize ( $filename ) );
header ( 'Content-Type: application/x-zip-compressed; name="' . basename ( $filename ) . '"' );
header ( 'Content-Disposition:' . $att . ' filename="' . basename ( $filename ) . '"' );
header ( 'Content-Transfer-Encoding: binary' );
readfile ( $filename );

demo

by using basename, other ppl can know what is the location of the mp3 but for security purposes, i dun want ppl to know the location of the mp3

starsunited
Light Poster
44 posts since Dec 2004
Reputation Points: 11
Solved Threads: 1
 

i did not use zip file anymore then can work already. i am able to download the file successfully. the next problem arises up. :sad:

In the first place, the mp3 file has a ID3 tag. after it has been downloaded, the ID3 tag is deleted. I figure it must be the codinng though because when i download it straight from server through ftp. Everything is alright. i myself really do not know what is wrong. :?: :?:

This is the part of code which i think might be the problem

$currentdir = '../mp3_files'; $trackname = $trackdb->retrieveTrackName($track_oid); $filename = "$trackname.mp3"; $pathname = "$currentdir/$filename"; $fr = fopen($pathname, 'r'); $filedata = fread($fr, filesize($pathname)); //fclose($fr);

//$zipfile->add_file($filedata,$filename); header ( 'Content-Length: ' . filesize ( $pathname ) ); header("Content-type: application/octet-stream"); header("Content-disposition: attachment; filename=$filename"); header ( 'Content-Transfer-Encoding: binary' ); readfile($pathname);

starsunited
Light Poster
44 posts since Dec 2004
Reputation Points: 11
Solved Threads: 1
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You