Intereting Posts
как написать webservice, который нуждается в аутентификации – PHP Запуск PHP после запроса Как наилучшим образом рассчитать расстояние между двумя городами (Канада)? отправка дополнительных значений в PHP-скрипт с использованием загрузки углового файла Могу ли я получить доступ к другим Календарям Google Google через Google API v3 Получить последнюю часть URL-адреса PHP как мне помещать цикл в таблицу html? Вложенные объекты Symfony 3.0 не сохраняются Как декодировать зашифрованные файлы ionCube? Где регистрировать слушателей событий PHP: имя oci_bind_by_name и timestamp приводит к «ORA-01461: может привязывать значение LONG только для вставки в столбцы LONG» Как изменить цвет ячейки таблицы на основе информации, хранящейся в таблице базы данных php? Проблемы с mod_rewrite и mod_userdir Запрос POST с JSON-словарем не возвращает правильное значение с $ _POST в Swift 3? Почему PHP, похоже, неправильно оценивает это состояние?

Обработка загружаемых загрузок plupload на стороне сервера

Когда я использую plupload для chunk-файлов (параметр настройки chunk_size ), я получаю отдельный запрос PHP для каждого фрагмента. Рассматривая переменную $_FILES , каждый кусок имеет тип "application/octet-stream" .

Есть ли простой, стандартный и удобный способ объединения этих частей в PHP на стороне сервера?

С гарантией разумности (например, когда одна из частей отсутствует и т. Д.).

Related of "Обработка загружаемых загрузок plupload на стороне сервера"

Вот способ разобрать куски и сохранить результат в $ upload_file (изменить $ uploaded_file в соответствии с тем, что вам нужно).

  $uploaded_file = '/tmp/uploadFile.jpg'; $chunks = isset($_POST["chunks"]) ? $_POST["chunks"] : 0; // If we have a chunked operation... if ($chunks > 0) { // Get the chunk number... $chunk = isset($_POST["chunk"]) ? $_POST["chunk"] : 0; if ($chunk == 0) { if (!isset($_SESSION['last_chunk'])) { $_SESSION['last_chunk'] = array(); } $_SESSION['last_chunk'][$_POST['unique_id']] = $chunk; } else { if ($_SESSION['last_chunk'][$_POST['unique_id']] != $chunk + 1) { die('{"jsonrpc" : "2.0", "error" : {"code": 192, "message": "Uploaded chunks out of sequence. Try again."}, "id" : "id"}'); } } $tmp_dir = sys_get_temp_dir(); // We need a unique filename to identify the file... $tmp_filename = $tmp_dir.$_POST['unique_id']; // If it is the first chunk we have to create the file, othewise we append... $out_fp = fopen($tmp_filename, $chunk == 0 ? "wb" : "ab"); // The file we are reading from... $uploaded_file = $_FILES['file']['tmp_name']; $in_fp = fopen($uploaded_file, "rb"); // Copy the chunk that was uploaded, into the file we are uploading... while ($buff = fread($in_fp, 4096)) { fwrite($out_fp, $buff); } fclose($out_fp); fclose($in_fp); // If we are the last chunk copy the file to the final location and continue on... if ($chunk == $chunks - 1) { copy($tmp_filename, $uploaded_file); unset($_SESSION['last_chunk'][$_POST['unique_id']]); if (count($_SESSION['last_chunk']) == 0) { unset($_SESSION['last_chunk']); } } else { // Otherwise report the result to the uploader... echo'{"jsonrpc" : "2.0", "result" : null, "id" : "id"}'; } } с  $uploaded_file = '/tmp/uploadFile.jpg'; $chunks = isset($_POST["chunks"]) ? $_POST["chunks"] : 0; // If we have a chunked operation... if ($chunks > 0) { // Get the chunk number... $chunk = isset($_POST["chunk"]) ? $_POST["chunk"] : 0; if ($chunk == 0) { if (!isset($_SESSION['last_chunk'])) { $_SESSION['last_chunk'] = array(); } $_SESSION['last_chunk'][$_POST['unique_id']] = $chunk; } else { if ($_SESSION['last_chunk'][$_POST['unique_id']] != $chunk + 1) { die('{"jsonrpc" : "2.0", "error" : {"code": 192, "message": "Uploaded chunks out of sequence. Try again."}, "id" : "id"}'); } } $tmp_dir = sys_get_temp_dir(); // We need a unique filename to identify the file... $tmp_filename = $tmp_dir.$_POST['unique_id']; // If it is the first chunk we have to create the file, othewise we append... $out_fp = fopen($tmp_filename, $chunk == 0 ? "wb" : "ab"); // The file we are reading from... $uploaded_file = $_FILES['file']['tmp_name']; $in_fp = fopen($uploaded_file, "rb"); // Copy the chunk that was uploaded, into the file we are uploading... while ($buff = fread($in_fp, 4096)) { fwrite($out_fp, $buff); } fclose($out_fp); fclose($in_fp); // If we are the last chunk copy the file to the final location and continue on... if ($chunk == $chunks - 1) { copy($tmp_filename, $uploaded_file); unset($_SESSION['last_chunk'][$_POST['unique_id']]); if (count($_SESSION['last_chunk']) == 0) { unset($_SESSION['last_chunk']); } } else { // Otherwise report the result to the uploader... echo'{"jsonrpc" : "2.0", "result" : null, "id" : "id"}'; } } с  $uploaded_file = '/tmp/uploadFile.jpg'; $chunks = isset($_POST["chunks"]) ? $_POST["chunks"] : 0; // If we have a chunked operation... if ($chunks > 0) { // Get the chunk number... $chunk = isset($_POST["chunk"]) ? $_POST["chunk"] : 0; if ($chunk == 0) { if (!isset($_SESSION['last_chunk'])) { $_SESSION['last_chunk'] = array(); } $_SESSION['last_chunk'][$_POST['unique_id']] = $chunk; } else { if ($_SESSION['last_chunk'][$_POST['unique_id']] != $chunk + 1) { die('{"jsonrpc" : "2.0", "error" : {"code": 192, "message": "Uploaded chunks out of sequence. Try again."}, "id" : "id"}'); } } $tmp_dir = sys_get_temp_dir(); // We need a unique filename to identify the file... $tmp_filename = $tmp_dir.$_POST['unique_id']; // If it is the first chunk we have to create the file, othewise we append... $out_fp = fopen($tmp_filename, $chunk == 0 ? "wb" : "ab"); // The file we are reading from... $uploaded_file = $_FILES['file']['tmp_name']; $in_fp = fopen($uploaded_file, "rb"); // Copy the chunk that was uploaded, into the file we are uploading... while ($buff = fread($in_fp, 4096)) { fwrite($out_fp, $buff); } fclose($out_fp); fclose($in_fp); // If we are the last chunk copy the file to the final location and continue on... if ($chunk == $chunks - 1) { copy($tmp_filename, $uploaded_file); unset($_SESSION['last_chunk'][$_POST['unique_id']]); if (count($_SESSION['last_chunk']) == 0) { unset($_SESSION['last_chunk']); } } else { // Otherwise report the result to the uploader... echo'{"jsonrpc" : "2.0", "result" : null, "id" : "id"}'; } } 

Я, наконец, использовал код из официального примера в комплекте с plupload-1.5.2 (examples / upload.php):

http://github.com/moxiecode/plupload/blob/master/examples/upload.php