-1

我正在使用以下代码将图像上传到 imagezilla.net

<form target="my_iframe" action="http://imagezilla.net/api.php" method="post" enctype="multipart/form-data">
    <input type="file" name="file" accept="image/x-png, image/gif, image/jpeg" />
    <input type="hidden" name="apikey" value="" />
    <input type="hidden" name="testmode" value="1" />
    <input type="submit" value="Upload Image" />
</form>

这很好用,但由于跨域规则,我没有办法取回结果,所以我试图将它放入 cUrl php

<?php
$ch = curl_init("http://imagezilla.net/api.php?file='C:\Anti-Backlash-Nut.jpg'&apikey=''&testmode=1");
$header = array('Content-Type: multipart/form-data');
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);       
curl_close($ch);
echo $output;
?>  

(第二批代码已经包含该文件作为快速测试)
我无法让 php 代码中的 Enctype 正常工作(行 $header = ...),因为它只是因为没有上传文件而返回。我究竟做错了什么?

4

2 回答 2

1

这是您上传文件的方式:

<?php
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, true);
    $post = array(
        "file"=>"@/path/to/myfile.jpg",
    );
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 
    $response = curl_exec($ch);
?>
于 2013-04-03T16:33:00.043 回答
0

您正在使用 GET 方法上传文件……但文件总是使用 POST 上传。为此,您必须将文件名放在@要作为帖子发送的文件名的前面。

在文件路径之前发送@确保 cURL 将文件作为“multipart/form-data”帖子的一部分发送

试试这个

<?php
 $ch = curl_init("http://imagezilla.net/api.php?apikey=''&testmode=1");
 $post = array(
    "file"=>"@C:\Anti-Backlash-Nut.jpg",
);
 curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
 curl_setopt($ch, CURLOPT_POST, 1);
 curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 $output = curl_exec($ch);       
 curl_close($ch);
 echo $output;
?>  
于 2013-04-03T16:48:38.723 回答