Php 在使用cURL将文件上载到使用httppost的restfulwebapi时指定目标数据库主体
我正在尝试使用HTTPPOST和cURL将文件上传到RESTfulWebAPI。下面是我目前正在尝试的代码块。这样一来,除了一个问题之外,一切都正常工作,它将数据存储在默认的数据库主体中。我想将文件上传到用户当前使用的数据库主体。我需要知道两件事-Php 在使用cURL将文件上载到使用httppost的restfulwebapi时指定目标数据库主体,php,rest,curl,post,Php,Rest,Curl,Post,我正在尝试使用HTTPPOST和cURL将文件上传到RESTfulWebAPI。下面是我目前正在尝试的代码块。这样一来,除了一个问题之外,一切都正常工作,它将数据存储在默认的数据库主体中。我想将文件上传到用户当前使用的数据库主体。我需要知道两件事- 有没有办法在cURL头中指定在web服务器中使用哪个数据库主体,或者有任何cURL选项可供选择 指定该选项,以便cURL POST以所述方式上载数据 数据库负责人 我以前从未使用过cURL,通过httppost将使用多部分/表单数据的文件上传到re
- 有没有办法在cURL头中指定在web服务器中使用哪个数据库主体,或者有任何cURL选项可供选择 指定该选项,以便cURL POST以所述方式上载数据 数据库负责人
- 我以前从未使用过cURL,通过httppost将使用多部分/表单数据的文件上传到restfulwebapi是最好的选择吗
for($i=0; $i<count($_FILES['files_to_upload']['name']); $i++) { if(!empty($_FILES['files_to_upload']['tmp_name'][$i])) { $ext = pathinfo($_FILES['files_to_upload']['name'][$i], PATHINFO_EXTENSION); $finfo = finfo_open(FILEINFO_MIME_TYPE); $mime = finfo_file($finfo, $_FILES['files_to_upload']['tmp_name'][$i]); $data_for_api = [ 'rel_type' => PROJECTS_REL_TYPE, 'rel_key' => $ktr, 'category' => $_POST['file_category'][$i], 'filename' => $_POST['file_name'][$i].".".$ext, 'file-form-data' => new CURLFile($_FILES['files_to_upload']['tmp_name'][$i],$mime,$_FILES['files_to_upload']['tmp_name'][$i]), 'description' => $_POST['file_name'][$i], 'uploader' => $this->session->userdata(RESNR) ]; $ch = curl_init(INTERNAL_API_URL.POST_A_FILE); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data_for_api); if(!curl_exec($ch)) { echo curl_error($ch); } curl_close($ch); } }
对于($i=0;$i项目\u REL\u类型, “rel_key”=>ktr美元, 'category'=>$\u POST['file\u category'][$i], 'filename'=>$\u POST['file\u name'][$i]。“..$ext, “文件格式数据”=>新建卷发文件($\u文件['FILES\u to\u upload']['tmp\u name'][$i],$mime,$\u文件['FILES\u to\u upload']['tmp\u name'][$i]), 'description'=>$\u POST['file\u name'][$i], 'uploader'=>$this->session->userdata(RESNR) ]; $ch=curl\u init(内部API\u URL.POST\u文件); 卷曲设置($ch,卷曲设置桩,1); curl_setopt($ch,CURLOPT_POSTFIELDS,$data_for_api); 如果(!curl_exec($ch)){ 回波旋度误差($ch); } 卷曲关闭($ch); } }
我以前从未使用过cURL,通过httppost将使用多部分/表单数据的文件上传到restfulwebapi是最好的选择吗
for($i=0; $i<count($_FILES['files_to_upload']['name']); $i++) {
if(!empty($_FILES['files_to_upload']['tmp_name'][$i])) {
$ext = pathinfo($_FILES['files_to_upload']['name'][$i], PATHINFO_EXTENSION);
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime = finfo_file($finfo, $_FILES['files_to_upload']['tmp_name'][$i]);
$data_for_api = [
'rel_type' => PROJECTS_REL_TYPE,
'rel_key' => $ktr,
'category' => $_POST['file_category'][$i],
'filename' => $_POST['file_name'][$i].".".$ext,
'file-form-data' => new CURLFile($_FILES['files_to_upload']['tmp_name'][$i],$mime,$_FILES['files_to_upload']['tmp_name'][$i]),
'description' => $_POST['file_name'][$i],
'uploader' => $this->session->userdata(RESNR)
];
$ch = curl_init(INTERNAL_API_URL.POST_A_FILE);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_for_api);
if(!curl_exec($ch)) {
echo curl_error($ch);
}
curl_close($ch);
}
}
一般来说,RESTful api有几种实现文件上传的方法。如果您只控制客户端而不控制服务器,那么这是否是最佳选择并不重要。REST api将定义上传的工作方式,您需要使用这种方法
如果同时控制服务器和客户端,最好不要使用multipart/form data
,而是使用PUT
请求,并直接创建新资源,而不是将它们包装在form/post请求中
无论如何,如果您正在编写服务器和客户机,并且想了解更多关于这些答案的信息,请关闭此问题并打开两个新问题。@fabrik我没有问如何使用curl和PHP上载文件。我想知道一些完全不同的东西。|
使用curl使用HTTP POST将文件上载到RESTful Web API
你应该curl\u close()
无论curl\u exec()
成功与否。curl(嗯,HTTP)不知道远程服务器在数据到达服务器时对数据做了什么。数据存储在哪里(例如,在哪个数据库中)完全由服务器脚本控制。这不是HTTP的某些固有功能,因此它没有头或任何东西。HTTP不知道数据库,也不关心-大多数HTTP请求不涉及数据库。如果您调用的服务器方法选择在POST中接受参数值,允许您指定选项,如是的,那么这是唯一的方法。就像任何其他参数值一样。“通过HTTP POST将使用多部分/表单数据的文件上载到RESTful WEB API是最好的选择吗?”…这是一种非常标准的方法,但您首先必须检查服务器希望以何种格式接收数据。它总是希望您执行其他操作。同样,没有“这总是正确的”回答,这取决于响应HTTP请求的代码是如何实现的。如果您没有编写该代码,请与编写代码的人员联系,或者查阅他们提供的文档(如果他们提供了)。