重新 POST $_FILES 到 REST Slim Framework
Re-POST $_FILES to REST Slim Framework
我的表单将 post 所有表单数据保存到名为 upload.php 的文件中。
问题是:是否可以像这样重新POSTmultipart/form-data,包括$_FILES到我的REST SLIM框架中:
$headers = array('Content-type: multipart/form-data','Authorization: '.$api_key,);
$curl_post_data = array('employee_id' => $employee_id,'files' => $_FILES);
$curl = curl_init('http://[...mydomain...]/v1/uploadEquipmentDocument');
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $curl_post_data);
curl_setopt($curl, CURLOPT_USERPWD, $api_key);
$curl_response = curl_exec($curl);
谢谢..
如果你想使用 cUrl 上传文件,你不能只传递你在 $_FILES 数组中得到的文件名 (temp/real),因为这是 PHP 必须的包装器当您想使用上传到服务器的文件时,让您的生活变得轻松。
你有两个选择:
选项 1:
使用 @
告诉 cUrl 这不仅仅是一个变量,这是一个你要上传的文件。在这种情况下,php will post the file itself(而不仅仅是作为文件名的字符串):
$curl_post_data['file1'] = "@" . $_FILES['uploaded_file1']['tmp_name'];
(我假设您的原始表单有 <input type="file" name="uploaded_file1" />
。请使用您的原始输入名称以使其正常工作)
选项编号 2:
如果您使用的是 PHP>=5.5,则可以使用新的 CURLFile object,它会为您提供相同的结果和一些不同的方法:
// Create a CURLFile object
$cfile = new CURLFile($_FILES['uploaded_file1']['tmp_name'], $_FILES['uploaded_file1']['type'], $_FILES['uploaded_file1']['name']);
// Assign POST data
$curl_post_data = array('file1' => $cfile);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $curl_post_data);
// Execute the handle
curl_exec($curl);
我的表单将 post 所有表单数据保存到名为 upload.php 的文件中。
问题是:是否可以像这样重新POSTmultipart/form-data,包括$_FILES到我的REST SLIM框架中:
$headers = array('Content-type: multipart/form-data','Authorization: '.$api_key,);
$curl_post_data = array('employee_id' => $employee_id,'files' => $_FILES);
$curl = curl_init('http://[...mydomain...]/v1/uploadEquipmentDocument');
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $curl_post_data);
curl_setopt($curl, CURLOPT_USERPWD, $api_key);
$curl_response = curl_exec($curl);
谢谢..
如果你想使用 cUrl 上传文件,你不能只传递你在 $_FILES 数组中得到的文件名 (temp/real),因为这是 PHP 必须的包装器当您想使用上传到服务器的文件时,让您的生活变得轻松。
你有两个选择:
选项 1:
使用 @
告诉 cUrl 这不仅仅是一个变量,这是一个你要上传的文件。在这种情况下,php will post the file itself(而不仅仅是作为文件名的字符串):
$curl_post_data['file1'] = "@" . $_FILES['uploaded_file1']['tmp_name'];
(我假设您的原始表单有 <input type="file" name="uploaded_file1" />
。请使用您的原始输入名称以使其正常工作)
选项编号 2:
如果您使用的是 PHP>=5.5,则可以使用新的 CURLFile object,它会为您提供相同的结果和一些不同的方法:
// Create a CURLFile object
$cfile = new CURLFile($_FILES['uploaded_file1']['tmp_name'], $_FILES['uploaded_file1']['type'], $_FILES['uploaded_file1']['name']);
// Assign POST data
$curl_post_data = array('file1' => $cfile);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $curl_post_data);
// Execute the handle
curl_exec($curl);