Как загрузить файл побайтно в php - PullRequest
0 голосов
/ 20 октября 2011

У меня есть элемент input type = "file", и он принимает файл.Когда я загружаю его и передаю на серверный скрипт php.

Как записать временный файл, хранящийся в байтах $ _FILES ["file"] ["tmp_name"]?Код ниже не работает.Вроде напишу в конце запроса.Если, например, соединение потеряно в промежутке, я хотел бы посмотреть, было ли выполнено 40%, чтобы я мог возобновить его.

Есть какие-нибудь указатели?

$target_path = "uploads/";
$target_path = $target_path . basename($name);
if (isset($_FILES['file']['tmp_name']) && is_uploaded_file($_FILES['file']['tmp_name'])) {
        // Open temp file
        $out = fopen($target_path, "wb");
        if ($out) {
            // Read binary input stream and append it to temp file
            $in = fopen($_FILES['file']['tmp_name'], "rb");

            if ($in) {
                while ($buff = fread($in, 4096))
                    fwrite($out, $buff);

            } 

            fclose($in);
            fclose($out);

        }
} 

1 Ответ

2 голосов
/ 20 октября 2011

PHP не передает управление целевому сценарию загрузки файла, пока ПОСЛЕ загрузки не завершено (или не удалось).Вам не нужно ничего делать, чтобы «принять» файл - PHP и Apache позаботятся о записи его в имя файла, указанное в параметре ['tmp_name'] массива $ _FILES.

Если выпытаясь возобновить неудачную загрузку, вам понадобится гораздо более сложный скрипт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...