2013-03-01 706 views
2

在通过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?你有什么“困难”? – Pointy 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

回答