我想使用cURL不仅在HTTP POST中发送数据参数,而且还上传具有特定表单名称的文件。我该怎么做呢?
HTTP Post参数:
Userid = 12345
filecomment =这是一个映像文件
文件上传:
文件位置= /home/user1/Desktop/test.jpg
file = image的表单名称(对应PHP端$_FILES['image'])
我认为cURL命令的一部分如下所示:
curl -d "userid=1&filecomment=This is an image file" --data-binary @"/home/user1/Desktop/test.jpg" localhost/uploader.php
我遇到的问题如下:
Notice: Undefined index: image in /var/www/uploader.php
问题是我使用$_FILES['image']在PHP脚本中拾取文件。
如何相应地调整cURL命令?
保存所有已发送文件到文件夹:
主机上的PHP文件。u.php:
<?php
$uploaddir = 'C:/VALID_DIR/';
echo '<pre>';
foreach ($_FILES as $key => $file) {
if(!isset($file) || !isset($file['name'])) continue;
$uploadfile = $uploaddir . basename($file['name']);
if (move_uploaded_file($file['tmp_name'], $uploadfile)) {
echo "$key file > $uploadfile .\n";
} else {
echo " Error $key file.\n";
}
}
print_r($_FILES);
print "</pre>";?>
客户端使用:
curl -v -F filename=ff.xml -F upload=@ff.xml https://myhost.com/u.php
这对我来说很管用。
我的虚拟机崩溃了,它只有互联网连接。
我用这种方法恢复了一些文件。