2013-07-03 4 views
0

Я только что перешел из 000webhost (бесплатно) на GoDaddy (платные) серверов и до сих пор, как в 10 раз хуже, чем 000webhost>.>Загрузка файлов с помощью PHP скрипт

В любом случае, моя проблема с загрузки. Я использую следующий код, и он отлично работал на 000webhost, чтобы пользователи могли загружать rar-файлы, но теперь на godaddy, rar-файл возвратит конец ошибки архива. Я проверял через FTP, файлы не были повреждены в результате загрузки

<?php 
$userAgent = $_SERVER['HTTP_USER_AGENT']; 
$IP1 = $_SERVER['HTTP_X_FORWARDED_FOR']; 
$IP2 = $_SERVER['REMOTE_ADDR']; 
$HWID = $_GET['HWID']; 
date_default_timezone_set('America/New_York'); 
$date = date("m/d/y g:i:sA", time()); 
$file = $_GET['file']; 

file_put_contents('Logs/Downloaded.txt', "IP: " . $IP2 . " Downloaded On: " . $date . " File: " . $file . " User Agent: " . $userAgent . "\n", FILE_APPEND); 



$path = "files/"; 
$fullPath = $path.$file; 

if(file_exists($fullPath)){ 
if ($fd = fopen ($fullPath, "r")) { 
    $fsize = filesize($fullPath); 
    $path_parts = pathinfo($fullPath); 
    $ext = strtolower($path_parts["extension"]); 
    switch ($ext) { 
     case "pdf": 
     header("Content-type: application/pdf"); // add here more headers for diff. extensions 
     break; 
     case "zip": 
     header("Content-type: application/zip"); 
    break; 
     default; 
     header("Content-type: application/octet-stream"); 
    } 
    header("Content-Disposition: attachment; filename=\"".$path_parts["basename"]."\""); 
    header("Content-length: $fsize"); 
    header("Cache-control: private"); //use this to open files directly 
    while(!feof($fd)) { 
     $buffer = fread($fd, 2048); 
     echo $buffer; 
    ob_flush(); 
     flush(); 
    } 
} 
fclose ($fd); 
exit; 
}else{ 
    die("File could not be found"); 
} 
?> 
+0

не часть вас проблема, но вы можете заменить вас буферизацией напишите вызовом fpassthru – Orangepill

+0

У вас есть пробелы в конце? Newlines и т. Д.? –

+0

Нет, я не @Bart Frienderichs – Richie

ответ

0

Выполняется ли скрипт? Вам может понадобиться set_time_limit(0), чтобы убедиться, что он завершен.

Другое дело - открыть загруженный файл в шестнадцатеричном редакторе и искать аномалии - я подозреваю, что у вас может быть предупреждение PHP. Вы вызываете ob_flush в свой выходной цикл, но насколько я могу судить, вы не выполняете буферизацию вывода. Возможно, это вызывает предупреждение, искажая ваш результат.

+0

Скрипт завершается. И даже с добавлением set_time_limit (0), происходит такая же ошибка. Я просто предполагаю, что это проблема хозяина прямо сейчас – Richie

Смежные вопросы