HTTP POST リクエストを介してファイルをアップロードしてさまざまなテストを行った結果、HTTP PUT リクエストは、1 GB を超える非常に大きなファイルのアップロードに最も適しているようです。
HTTP PUT ファイル アップロード リクエストに対してテストした以下の単純なコードは、うまく機能します。
JavaScript:
var req = createRequest();
req.open("PUT", "PHP/filePutLoad.php");
req.setRequestHeader("Content-type", "text/plain");
req.onload = function (event)
{
console.log(event.target.responseText);
}
req.send(aUploadedFile.file_object);
PHP:
include 'ChromePhp.php';
require_once 'mysqlConnect.php';
ini_set('max_execution_time', 0);
ChromePHP::log( '$_PUT :' . print_r($_PUT));
/* PUT data comes in on the stdin stream */
$putdata = fopen("php://input", "r");
/* Open a file for writing */
$fp = fopen("myputfile.ext", "w");
/* Read the data 1 KB at a time and write to the file */
while ($data = fread($putdata, 1024))
fwrite($fp, $data);
/* Close the streams */
fclose($fp);
fclose($putdata);
ただし、JavaScript から PHP にアップロードされるファイルで引数と変数を渡すのは困難です。たとえば、アップロード先のフォルダ、新しいデータを保存する必要がある場所、アップローダーの ID などを配信する必要があります。
- HTTP PUT リクエストと HTTP POST を組み合わせて引数を送信する方法はありますか?
- HTTP PUT ファイルのアップロードに沿って JavaScript から PHP にパラメーターを配信したい場合、どのようなオプションがありますか?
ありがとうございました。