The downloaded file code may be corrupted due to problems.

Source: Internet
Author: User
The downloader code may be faulty, causing the PDF file to damage the PDF file on the server to be healthy: it has been verified by direct downloading through FTP. Part of the download code is as follows: $ file_size & nbsp ;=& nbsp; filesize ($ filedir); header ("Content-type: & the download code may be faulty, resulting in file corruption
The PDF file on the server is healthy: it has been verified by direct FTP download.
Part of the download code is as follows:

$ File_size = filesize ($ filedir );
Header ("Content-type: application/octet-stream; charset = ISO-8859-1 ");
Header ("Cache-control: private ");
Header ("Accept-Ranges: bytes ");
Header ("Accept-Length:". $ this-> FjSize );
Header ("Content-Disposition: attachment; filename =". $ this-> delFileName );
$ Fp = fopen ($ filedir, "r ");
$ Buffer_size = 1024;
$ Cur_pos = 0;
While (! Feof ($ fp) & $ filedir-$ cur_pos> $ buffer_size)
{
$ Buffer = fread ($ fp, $ buffer_size );
Echo $ buffer;
$ Cur_pos + = $ buffer_size;
}

If ($ file_size> 0)
$ Buffer = fread ($ fp, $ file_size-$ cur_pos );
Else
$ Buffer = fread ($ fp, $ this-> FjSize );
Echo $ buffer;
Fclose ($ fp );
Flush ();
------ Solution --------------------
$ Fp = fopen ($ filedir, "rb"); // it is opened in binary mode. it is recommended that you do not need it in linux.
For a file opened in text mode, 0x1a is regarded as the end of the file.

While (! Feof ($ fp) & $ filedir-$ cur_pos> $ buffer_size)
Yishu
While (! Feof ($ fp ))
Feof ($ fp) is the end of the file
$ Filedir-$ cur_pos> $ buffer_size is unnecessary.
Double judgment may lead to errors, for example, when $ filedir is not an integer multiple of $ buffer_size

Besides the file content, you cannot output any other content, including the BOM header.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.