Jos*_*osh 5 php curl file-upload file-transfer
我正在使用cURL使用PHP将图像文件从一台服务器传输到另一台服务器.这是我的cURL代码:
// Transfer the original image and thumbnail to our storage server
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_VERBOSE, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, 'http://' . $server_data['hostname'] . '.localhost/transfer.php');
curl_setopt($ch, CURLOPT_POST, true);
$post = array(
'upload[]' => '@' . $tmp_uploads . $filename,
'upload[]' => '@' . $tmp_uploads . $thumbname,
'salt' => 'q8;EmT(Vx*Aa`fkHX:up^WD^^b#<Lm:Q'
);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$resp = curl_exec($ch);
Run Code Online (Sandbox Code Playgroud)
这是我上传到的服务器上的transfer.php中的代码:
if($_FILES && $_POST['salt'] == 'q8;EmT(Vx*Aa`fkHX:up^WD^^b#<Lm:Q')
{
// Save the files
foreach($_FILES['upload']['error'] as $key => $error)
{
if ($error == UPLOAD_ERR_OK)
{
move_uploaded_file($_FILES['upload']['tmp_name'][$key], $_FILES['upload']['name'][$key]);
}
}
}
Run Code Online (Sandbox Code Playgroud)
除了一个小的逻辑错误外,一切似乎都有效.在我转移到的服务器上只保存了一个文件.这可能是因为我upload[]在我的帖子字段数组中调用了两个图像,但我不知道怎么做.我试图模仿这样做:
<input type="file" name="upload[]" />
<input type="file" name="upload[]" />
Run Code Online (Sandbox Code Playgroud)
谁知道我怎么能让这个工作?谢谢!
代码本身看起来不错,但我不知道你的 move() 目标目录。您正在使用客户端提供的原始文件名(即您的curl 脚本)。您使用原始上传的文件名(在curl 脚本中指定)作为移动目标,没有覆盖检查,也没有路径数据。如果两个上传的文件具有相同的文件名,您将使用 PHP 第二个处理的图像覆盖第一个处理的图像。
尝试对 move() 命令进行一些调试:
if (!move_uploaded_file($_FILES['upload']['tmp_name'][$key], $_FILES['upload']['name'][$key])) {
echo "Unable to move $key/";
echo $_FILES['upload']['tmp_name'][$key];
echo ' to ';
echo $_FILES['upload']['name'][$key];
}
Run Code Online (Sandbox Code Playgroud)
(为了清晰起见,我将回声分成多行)。
| 归档时间: |
|
| 查看次数: |
7941 次 |
| 最近记录: |