3

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 にパラメーターを配信したい場合、どのようなオプションがありますか?

ありがとうございました。

4

1 に答える 1

1

PUT を使用しても、クエリ文字列にパラメーターを追加すると機能します。私はこれのための別の方法も探しています。ただし、これは私が現在使用している回避策です

curl -X PUT " http://www.my-service.com/myservice?param1=val1 " --data @file.txt

于 2013-06-11T15:12:43.933 に答える