2014-09-15 3 views
0

Я пытаюсь загрузить ZIP-папку на удаленный сервер с помощью PHP CURL, но я понятия не имею, почему почтовая папка/файл, который загружен на удаленный сервер, пуст!загружать zip-папку на удаленный сервер с помощью PHP?

в основном файл загружается (некоторые как), но когда я смотрю загруженную папку, он отображается как 0 bytes, но в папке zip есть 700 bytes файлов в нем!

вот мой код:

<form enctype="multipart/form-data" encoding="multipart/form-data" method="post" action="myfile.php"> 
    <input name="uploadedfile" type="file" value="choose"> 
    <input type="submit" value="Upload"> 
</form> 



<?php 
if (isset($_FILES['uploadedfile'])) { 
    $filePath = $_FILES['uploadedfile']['tmp_name']; 

    $POST_DATA = array(
     'file' => '@'. realpath($filePath) 
    ); 

    $curl = curl_init(); 
    curl_setopt($curl, CURLOPT_URL, 'http://remotesite/handle.php'); 
    curl_setopt($curl, CURLOPT_TIMEOUT, 30); 
    curl_setopt($curl, CURLOPT_POST, 1); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($curl, CURLOPT_POSTFIELDS, $POST_DATA); 
    $response = curl_exec($curl); 
    curl_close ($curl); 

    if($errno = curl_errno($curl)) { 
     $error_message = curl_strerror($errno); 
     echo "cURL error ({$errno}):\n {$error_message}"; 
    } else { 
     echo "<h2>File Uploaded</h2>"; 
    } 
} 
?> 

и это мой handle.php код:

<?php 
$encoded_file = $_POST['file']; 
$decoded_file = base64_decode($encoded_file); 
/* Now you can copy the uploaded file to your server. */ 
file_put_contents('subins.zip', $decoded_file); 
?> 

может кто-то пожалуйста, дайте мне знать, что я пропускаю или делаю неправильно?

Спасибо заранее,

+0

ли работа с другими типов файлов? Убедитесь, что сервер не запущен в проблему с дисковой квотой. – TecBrat

+0

Вы просматриваете $ POST ['файл'] в файле handle.php, но, как представляется, имя называется uploadefile. Независимо от того, вы помещаете содержимое в zip-файл, но никогда не пытаетесь «распаковать» его в папку ... – ssnobody

ответ

1

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

Handle.php:

if ($_FILES["file"]["error"] > 0) { 
    echo "Return Code: " . $_FILES["file"]["error"] . "<br>"; 
    } else { 
     // Move the file to the desired directory 
     move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]); 
     echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; 
    } 
    } 
+0

все равно перемещать загруженный файл в корневую папку, а не хранить его в папке загрузки? например, перемещая его в папку public_html? Я попытался переименовать(); и я также попробовал 'move_uploaded_file ($ _ FILES [" file "] [" tmp_name "]," ../ ". $ _FILES [" file "] [" name "]);' все остальные коды, но это doesn ' t переместите загруженную папку в public_html. любое предложение? – shell

+0

@shell Либо вы добавляете полный путь/home/user/public_html, например, или более, более гибким способом 'move_uploaded_file ($ _ FILES [" file "] [" tmp_name "], realpath ('../'). '/'. $ _FILES ["file"] ["name"]; ' – Isaac

+0

Спасибо, но все еще не перемещает файл в public_html! Он загружает его в папку для загрузки, но не копирует и не перемещает его в public_html ! – shell

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