HTTP PUT请求:使用文件传递参数

时间:2013-03-01 14:53:50

标签: php javascript ajax post put

通过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,我有哪些选择?

谢谢。

1 个答案:

答案 0 :(得分:0)

使用PUT也可以在查询字符串中附加参数时起作用。我也在寻找另一种方式。虽然,这是我目前正在使用的解决方法

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