cURL + PHP +文件上传问题

时间:2015-06-13 16:46:45

标签: php ajax curl file-upload

Hello其他程序员。

我是初学程序员,但我没有尝试创建在一个特定网站上传图片的脚本。

我的老板需要将图片上传到特定网站。为了加快速度,我需要为此创建一个脚本。

我通常使用cURL的多部分表单数据,但这个站点不同。

以下是标题

POST /upload-new.php?banner_url=http%3A%2F%2Ftest.com&ad_type=1&banner_size= HTTP/1.1
Host: admin.domain.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: lv,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Content-Type: application/octet-stream
X-File-Name: indonesia.gif
X-File-Size: 15450
X-File-Type: image/gif
X-File-Date: Fri, 29 May 2015 09:48:22 GMT
X-Requested-With: FileDrop-XHR-FileAPI
Referer: https://admin.domain.com/campaigns-edit.php
Content-Length: 15450
Cookie: goals=
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
GIF89a,ú
HTTP/1.1 200 OK
Server: nginx
Date: Sat, 13 Jun 2015 16:22:08 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Encoding: gzip
----------------------------------------------------------
https://admin.domain.com/data/tmp-uploads/159310_20150613122208_indonesia.gif

GET /data/tmp-uploads/159310_20150613122208_indonesia.gif HTTP/1.1
Host: admin.domain.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: lv,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: https://admin.domain.com/campaigns-edit.php
Cookie: goals=
Connection: keep-alive

HTTP/1.1 200 OK
Server: nginx
Date: Sat, 13 Jun 2015 16:22:08 GMT
Content-Type: image/gif
Content-Length: 15450
Last-Modified: Sat, 13 Jun 2015 16:22:08 GMT
Connection: keep-alive
Etag: "557c58b0-3c5a"
Accept-Ranges: bytes

这就是我试过的

  $file = realpath($file_name);
  $finfo = new finfo(FILEINFO_MIME);
  $mimetype = $finfo->file($file);
  $cfile = curl_file_create($file, $mimetype); 


  $PostData = array( '' => $cfile );

  //$headers

  $headers = array();

  $headers[] = 'X-File-Name: indonesia.gif';
  $headers[] = 'X-File-Size: 15450';
  $headers[] = 'X-File-Type: image/gif';
  $headers[] = 'X-File-Date: Fri, 29 May 2015 09:48:22 GMT';
  $headers[] = 'X-Requested-With: FileDrop-XHR-FileAPI';  

  $URL = "https://admin.domain.com/upload-new.php?banner_url=http%3A%2F%2Ftest.com&ad_type=1&banner_size="

    $ch = curl_init();  
    curl_setopt($ch, CURLOPT_URL, $URL); 
    curl_setopt($ch, CURLOPT_USERAGENT, $agent);
    curl_setopt($ch, CURLOPT_POST, 1);  
   // curl_setopt($ch, CURLOPT_POSTFIELDS,$PostData); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 


    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
    curl_setopt($ch, CURLOPT_REFERER, $reffer);
    curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path); 
    curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path);         


    $size = filesize($lfile);
        $file = fopen($lfile, 'r');

    curl_setopt($ch, CURLOPT_POSTFIELDS, "@" . $lfile);
    curl_setopt($ch, CURLOPT_INFILE, $file);
    curl_setopt($ch, CURLOPT_INFILESIZE, $size);


    If (StrLen ($Proxy) > 0)
    {
      curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
      curl_setopt($ch, CURLOPT_PROXY,$Proxy);
    }

    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120);
    curl_setopt($ch, CURLOPT_TIMEOUT, 120);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
    $result = curl_exec($ch);  
    curl_close($ch);

网站回答链接到图片,它给了我404.所以好像我没有发送文件。

有人可以给我一些指导吗?

0 个答案:

没有答案