2013-02-13 66 views
0

我想上传图像使用PHP /卷曲在网站上使用卷曲/ PHP。该网站使用ajax/flash将图像上传到外部服务器。当我使用萤火虫在网站上手动上传图片时,如果图片成功上传,我只会收到回应(带有永久链接),但我没有看到发布了哪些参数和数据,以及发布的具体内容。图片上传使用卷曲/ php

网页的网址,让图像需要上传:

http://tinyurl.com/bp779wx

如何找出参数需要什么,以获得在网站上成功上传的图像发送?

+1

你想直接发送到外部服务器?您无法观察Web服务器正在与外部服务器交谈的内容。 – 2013-02-13 19:49:25

+0

不是直接...我将使用curl登录和使用相同的cookie以显示为真实用户。虽然有一些Ajax的东西,但它给了你一些参数。还有一些令牌可用。我想如果我找到参数的名称,我会很好。 – zista 2013-02-13 20:03:13

+0

@zista你是什么意思“但我看不到什么参数和数据张贴”? – 2013-02-16 23:37:35

回答

2

用PHP和cURL上传图片。

function curl_post_request($url, $data, $referer='') { 
$data = http_build_query($data); // seems to be required arrays should'nt be supported ? whatever. 
$c = curl_init(); 
curl_setopt($c, CURLOPT_URL, $url); 
curl_setopt($c, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($c, CURLOPT_HEADER, true); 
curl_setopt($c, CURLOPT_POST, true); 
curl_setopt($c, CURLOPT_POSTFIELDS, $data); 
curl_setopt($c, CURLOPT_REFERER, $referer); 
curl_setopt($c, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1"); 
curl_setopt($c, CURLOPT_HEADER, $headers); 
curl_setopt($c, CURLINFO_HEADER_OUT, true); 
curl_setopt($c, CURLOPT_VERBOSE, true); 
$output = curl_exec($c); 
var_dump(curl_getinfo($c, CURLINFO_HEADER_OUT)); 
//var_dump($data); 
if($output === false) trigger_error('Erreur curl : '.curl_error($c),E_USER_WARNING); 
curl_close($c); 
return $output; 
} 

if(isset($_GET['GO'])) { 

$data = array(
'pic1' => "@".realpath('image.jpg'), 
'postedvar1' => 'test1', 
'postedvar2' => 'test2' 
); 
$url = 'http://localhost/test/index.php'; 
$a = curl_post_request($url, $data); 
var_dump($a); 

} else { 

print_r($_POST); 
print_r($_FILES); 
} 

上传图像使用curl + PHP通过远程形式

$info = array('test title','1234','virginia','@'.realpath('e:\wamp 
\www\1.jpg'),'@'.realpath('e:\wamp\www\2.jpg'),'@'.realpath('e:\wamp\www 
\3.jpg'),'@'.realpath('e:\wamp\www\4.jpg'),'test description'); 
    $post->postAd($url, $info); 

也请仔细阅读本

http://www.maheshchari.com/upload-image-file-to-remote-server-with-php-curl/

而且看到这个链接

http://blog.smileylover.com/remote-upload-to-imageshackus-with-phpcurl/

而且

http://blogs.digitss.com/php/curl-php/posting-or-uploading-files-using-curl-with-php/

1

与网站的形象有些问题上传 - 它只是弹出一个错误

时出错上传你的图片。请检查图像尺寸 和尺寸,然后重试。如果你仍然有问题,你可以 切换到基本的图像加载器。

对于每种类型的图像和基本图像加载程序也实际上并不可用!

3

您提到的具体上传器从以下URL中提取epsToken变量,然后将其用作上传文件的参数。

http://johannesburg.gumtree.co.za/c-GetEpsToken

在我的情况下,令牌是:

1:b6ac30fa715a395cf728ac29847b2516f701a8f291fd5243d5153eae41c10636

你可以看到完整的POST数据的上传请求我做here。请记住,这是一个多部分/表单数据请求,因此您可能需要调整curl/PHP代码以支持该请求。

基本上,下面的参数通过POST请求提供:

Filename = Image.png 
b = 18 
s = 1C5000 
n = k 
a = 1:b6ac30fa715a395cf728ac29847b2516f701a8f291fd5243d5153eae41c10636 
v = k 
r = 0 
u = the actual image, sent as a multipart stream 
Upload = Submit Query 

我建议你分析其他参数和使用来自其他答案代码,才能成功上传的图片。

+0

这对我来说似乎是正确的答案。 @zista将需要从第一个网址获得密钥,然后根据您的发布数据发送图像。我也尝试上传一些图片,除令牌外,所有数据都是相同的。 (我仍然想知道你是如何找到令牌URL的) – Kyborek 2013-02-20 14:41:30

+1

数据提取(包括url和所有其他变量)是使用HTTP拦截代理完成的。在这种情况下,我使用[Charles](http://www.charlesproxy.com/)。它是一个非常棒的工具,可以记录所有对服务器的请求,从而加快Web应用程序的开发速度。您甚至可以修改/拦截请求并将其发回。 – 2013-02-22 20:17:21

+0

只是好奇,但你不能通过Google Chrome开发者工具中的网络标签提取相同的信息吗?为了拦截和修改请求,你需要像查尔斯那样的东西。 – 2013-02-22 21:25:09