3

在通过 HTTP POST 请求上传文件的各种测试之后,看起来 HTTP PUT 请求最适合非常大的文件 +1GB 上传。

下面列出了我为 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 回答