fopen - fread

7 отговора 233 прегледа
#1

fopen - fread

Imam edna programka, koiato triabva da se download-va prez saita.
Goliama e okolo 700 KB.
Svaliam ia taka:

$file = "setup.exe";
$file_size = filesize("/nesto/si/$file");
$fp = fopen("/nesto/si/$file","rb");
Header("Content-Type: application/x-octet-stream");
Header("Content-Disposition: attachment; filename=$file");
echo fread($fp, $file_size);

obache iavno nesto ne srabotva kakto ochakvam, zastoto exe-to ne tragva. Kazva "Invalid package size". Sastoto tova exe si raboti po princip.
Osven tova kato go svalia s <a href="setup.exe">setup.exe</a> pak si raboti.

Ot druga strana sas gornia skript svaliam drugi exe-ta bez problem.

Molia pomognete! Kade barkam?

Отговор
в отговор на ano #2

Re: fopen - fread

pozlvai fpassthru zamesto fread

puffff
Отговор
в отговор на xc #3

Re: fopen - fread

probvah - ne ste i ne ste

Отговор
в отговор на ano #4

Re: fopen - fread

kakva greshka ti dava ?

probvali da dadesh application/binary ili neshto podobno tam ne se seshtam kak se pisheshe tochno ?

puffff
Отговор
в отговор на ano #5

Re: fopen - fread

Преди някой изнервен системен администратор да те набие се научи да си проверяваш собствения код.

Къде ти е проверката дали fopen() е успял да отвори файла или е върнал грешка? А?

$fp = fopen($kakvoto_i_da_e) or
{
print"Не се отваря пустия му $kakvoto_i_da_e и това сие";
die();
};


salle.online.bg/sig
Отговор
в отговор на salle #6

Re: fopen - fread

logichno, to ot tova triabvashe da pocheneme

puffff
Отговор
в отговор на salle #7

Re: fopen - fread

prav si, razbira se za proverkta, obache ne e tam problema
faila idva i e s 1 byte po-goliam ot originala (koeto mejdu drugoto vaji i za dr. exe-ta, koito probvah i rabotiat)

saobstenieto e "Invalid package size. This pakage has been corrupted."

Отговор
в отговор на ano #8

Eto reshenieto

if (!($fc = fopen($base_path . $path . $file, "rb"))) {
echo "error\n";
exit;
}
$file_size = filesize($base_path . $path . $file);

ob_end_clean(); // Clean the output buffer and turn off output buffering
ignore_user_abort(false); // stop execution of script on 'STOP'

if(strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE')){
// IE cannot download from sessions without a cache
header('Cache-Control: public');
}
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"".$file."\"");
header("Content-length: ".(string)($file_size));
if ($description!="") {
header("Content-Description: " . $description);
}

while(!feof($fc)) {
echo fread($fc, 10240);
flush();
}

fclose($fc);
exit;

Отговор