我正在编写API,并且想处理从表单上传的文件POST
。表单的标记没有什么太复杂的:
<form action="" method="post" enctype="multipart/form-data">
<fieldset>
<input type="file" name="image" id="image" />
<input type="submit" name="upload" value="Upload" />
</fieldset>
</form>
但是,我很难理解如何处理此服务器端并与cURL请求一起发送。
我熟悉使用POST
带有数据数组的cURL
发送请求,并且在上载文件时阅读的资源告诉我在文件名前加上一个@
符号。但是这些相同的资源具有硬编码的文件名,例如
$post = array(
'image' => '@/path/to/myfile.jpg',
...
);
那么这是哪个文件路径?我在哪里可以找到它?会是什么样子$_FILES['image']['tmp_name']
,在这种情况下,我的$post
数组应该像这样:
$post = array(
'image' => '@' . $_FILES['image']['tmp_name'],
...
);
还是我走错路了?任何建议将不胜感激。
编辑:
如果有人可以给我一个代码片段,说明我将使用以下代码片段,那么我将不胜感激。我主要关注的是我将要作为cURL参数发送的内容,以及如何在接收脚本中使用这些参数的示例(curl_receiver.php
为方便起见,我们称之为参数)。
我有这个网络表格:
<form action="script.php" method="post" enctype="multipart/form-data">
<fieldset>
<input type="file" name="image />
<input type="submit" name="upload" value="Upload" />
</fieldset>
</form>
这将是script.php
:
if (isset($_POST['upload'])) {
// cURL call would go here
// my tmp. file would be $_FILES['image']['tmp_name'], and
// the filename would be $_FILES['image']['name']
}
这是一些将文件发送到ftp的生产代码(对于您来说可能是一个很好的解决方案):
// This is the entire file that was uploaded to a temp location.
$localFile = $_FILES[$fileKey]['tmp_name'];
$fp = fopen($localFile, 'r');
// Connecting to website.
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERPWD, "email@email.org:password");
curl_setopt($ch, CURLOPT_URL, 'ftp://@ftp.website.net/audio/' . $strFileName);
curl_setopt($ch, CURLOPT_UPLOAD, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 86400); // 1 Day Timeout
curl_setopt($ch, CURLOPT_INFILE, $fp);
curl_setopt($ch, CURLOPT_NOPROGRESS, false);
curl_setopt($ch, CURLOPT_PROGRESSFUNCTION, 'CURL_callback');
curl_setopt($ch, CURLOPT_BUFFERSIZE, 128);
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($localFile));
curl_exec ($ch);
if (curl_errno($ch)) {
$msg = curl_error($ch);
}
else {
$msg = 'File uploaded successfully.';
}
curl_close ($ch);
$return = array('msg' => $msg);
echo json_encode($return);
我如何发送此信息: 到API: 使用cURL,我目前一直在使用: 其中我得到了结果(NGrok): GET/testDir/curlPost。php HTTP/1.1 接受:text/html、Application/xhtml xml、image/jxr、/ 接受语言:en-GB 用户代理:Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537
问题内容: 我正在执行一个Android程序,该程序应该将数据从平板电脑发送到PHP Web服务。发送JSON的代码: PHP Web服务: 我尝试了获取JSON的不同方法,但没有一个对我有用。也许StackOverflow的优秀人才可以帮助我解决这个问题,因为他们总是遇到我遇到的其他所有问题。 问题答案: 在注释部分,您似乎只希望将JSON发送到您的PHP脚本。通常,您将POST发布到PHP,然
问题内容: 这已经困扰了我好几天了;我正在尝试通过Curl发送SOAP帖子,但是我一直收到“无法连接到主机”错误,但是,我真的看不到如何。 我有一个ASP版本,可以在相同的URL和数据下正常工作。我认为这只是PHP / Curl的事情。 我目前有以下代码(数据是有效的SOAP信封字符串): 那么有什么想法为什么总是会出错? ASP版本工作正常!代码是: 问题答案: 非常感谢,您的代码对我有用。 这
我是新来的,努力想找到我的答案,但我仍然有同样的问题。我已经检查了所有类似的问题和答案,但没有一个能帮助我,所以如果你知道同样的问题 我有一个html表单,它假设接受一个zip文件和一个字符串,然后希望通过Post方法将它们传递给Web服务。 我有其余的api服务器,这是我通过Spring boot编写的,现在尝试制作一个客户端测试项目来测试它。Postman的测试是成功的,我发送请求并接收响应没
问题内容: 我一直在为它构建一个Rest API,并且一直在使用命令行中的curl对它进行测试,这对于CRUD非常容易 我可以从命令行成功进行这些调用 上面的调用很容易从命令行进行,并且可以在我的api上正常使用,但是现在我想使用PHP创建curl。如您所见,我将数据作为json字符串传递。我已经阅读了很多,我想我可能可以进行POST并包含POST字段,但是我无法找出如何通过GET传递http正文
问题内容: 我有一个在线网关,要求将HTML表单与隐藏字段一起提交。我需要通过没有任何HTML形式的PHP脚本来执行此操作(我具有数据库中隐藏字段的数据) 要通过GET发送数据,请执行以下操作: 并通过POST发送数据? 问题答案: 您无法使用PHP执行此操作。 正如其他人所说,您可以使用cURL-但是PHP代码成为客户端而不是浏览器。 如果必须使用POST,那么唯一的方法就是使用PHP生成填充的