在通过HTTP POST请求上传文件进行大量各种测试之后,它看起来HTTP PUT请求最适合用于超大文件+ 1GB上传。HTTP PUT请求:通过文件传递参数
下面列出的简单的代码,我已经为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,我有什么选择?
谢谢。
+0
您是否尝试过简单地完全相同的方式添加参数,你会与一个POST?你有什么“困难”? –
2013-03-01 14:56:43
+0
必须是POST吗? req.open(“PUT”,“PHP/filePutLoad.php”+ args); –
2013-03-01 15:00:52
+0
@Pointy:是的,我尝试创建与POST请求相同的参数提交。发生了什么事情是,在服务器上,我收到了一个文件,它将我上传的文件与我上传的参数组合在一起。换句话说,参数与服务器上的上传文件合并在一起。 –
2013-03-01 15:24:13