我制作了一个很大程度上基于本教程的 REST 服务。我还制作了一个很大程度上基于本教程的 REST 请求库。(基本上,一堆switch
on $_SERVER['REQUEST_METHOD']
)。该 api 还使用 cURL 发出请求。
protected function executePost ($ch)
{
if (!is_string($this->requestBody))
{
$this->buildPostBody();
}
curl_setopt($ch, CURLOPT_POSTFIELDS, $this->requestBody);
curl_setopt($ch, CURLOPT_POST, 1);
$this->doExecute($ch);
}
protected function doExecute (&$curlHandle)
{
$this->setCurlOpts($curlHandle);
$this->responseBody = curl_exec($curlHandle);
$this->responseInfo = curl_getinfo($curlHandle);
curl_close($curlHandle);
}
我有 2 个简单的 HTML 表单,一个带有 get 方法,一个带有 post 方法。当我将其中一个与简单的输入文本一起使用时,效果很好。我毫无问题地获取/返回服务中的值。
但我需要从 HTML 表单发送图像,在我的服务中接收它,然后将其保存在服务器上。
这是我午餐时对服务进行查询的部分。
print_r($_FILES);
//move_uploaded_file( $_FILES["image1"]["tmp_name"], "Images/" . $_FILES["image1"]["name"] ); when uncommented, This line actually works and save the image in my folder.
include("RestUtils.php");
$request = new RestRequestOperator('http://localhost:8080/REST/RestControler.php/user/1', 'POST', $_FILES);
$request->execute();
在我的服务中,我收到图像信息,即 tmp_name 和名称。当我尝试使用 move_uploaded_file( 和正确的参数保存图像时,它不起作用。
我意识到在 tmp 文件夹中保存“短时间”的图像文件有某种魔力。当我打电话给我的服务时,图像已经被删除了?
总结:我想知道是否可以将图像发送到 PHP REST API 并将其保存在他们的服务器上。
编辑:我在服务中添加。
if(file_exists($_POST["image1"]["tmp_name"] )){
echo "file EXISTS<br>";
}else echo "NOPE.<br>";
if(is_uploaded_file($_POST["image1"]["tmp_name"] )){
echo "is_uploaded_file TRUE<br>";
}else echo "is_uploaded_file FALSE<br> .";
if(move_uploaded_file( $_POST["image1"]["tmp_name"], "Images/" .$_POST["image1"]["name"] )){
echo "move_uploaded_file SUCCESS ";
}else echo "NOT move_uploaded_file";
输出:文件 EXISTS , is_uploaded_file FALSE,NOT move_uploaded_file 这意味着文件实际上仍然存在于服务中,但上传的文件返回错误,可能是因为我在服务中使用 POST 数组而不是 $_FILES 数组,它在我的服务中是空的…………