gpt4 book ai didi

php - 在 PHP 中通过 cURL 从表单 POST 发送文件

转载 作者:IT王子 更新时间:2023-10-29 00:53:57 30 4
gpt4 key购买 nike

我正在编写一个 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 请求一起发送。

我熟悉使用带有数据数组的 cURL 发送 POST 请求,我在上传文件时阅读的资源告诉我在文件名前加上前缀 @象征。但是这些相同的资源有一个硬编码的文件名,例如

$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);

关于php - 在 PHP 中通过 cURL 从表单 POST 发送文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4223977/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com