我发现我的上传perl在我的apache上返回空文件,但是使用CURL发布它可以正常工作:
@FILES = qw (o1.tmp o2.tmp o3.tmp);
foreach $filename (@FILES) {
$ua=LWP::UserAgent->new;
$proxy = "http://$USERNAME:$PASSWORD\@$PROXY_ADD";
$ua->proxy(['http', 'https'], $proxy);
my $ua = LWP::UserAgent->new;
$ua->timeout(10);
my $url = "http://www.XXXXXXXXX.es/handler.php";
my $picture = $filename;
my %args;
my $field_name = "userfile";
my $buf ;
my $buf_ref = $args{'buf'} || \$buf ;
my $value = read_file( $picture , binmode => ':raw' , scalar_ref => 1 );
my $response = $ua->post( $url,
Content_Type => 'form-data',
Content => [ $field_name => ["$picture"] ]
);
print $response->content;
}
返回空文件:
root@dasdasd:/var/www/upload# ls -l
total 0
-rw-r--r-- 1 www-data www-data 0 oct 30 20:08 tmp_30-10-2013_0808pm_5554.tmp
-rw-r--r-- 1 www-data www-data 0 oct 30 20:08 tmp_30-10-2013_0808pm_8437.tmp
-rw-r--r-- 1 www-data www-data 0 oct 30 20:08 tmp_30-10-2013_0808pm_8629.tmp
但是有了这个cURL代码:
XXX-MacBook-Pro:Desktop xxxxxx$ curl -X PUT --header "Content-Type:multipart/form-data" --header "Name: 1" --data-binary "@2.gif" -v http://www.xxxxxxxxxx.es/handler.php
作品:
root@Arvaro:/var/www/upload# ls -l
total 4
-rw-r--r-- 1 www-data www-data 0 oct 30 20:08 tmp_30-10-2013_0808pm_5554.tmp
-rw-r--r-- 1 www-data www-data 0 oct 30 20:08 tmp_30-10-2013_0808pm_8437.tmp
-rw-r--r-- 1 www-data www-data 0 oct 30 20:08 tmp_30-10-2013_0808pm_8629.tmp
-rw-r--r-- 1 www-data www-data 6 oct 30 20:40 tmp_30-10-2013_0840pm_1978.tmp
^^^
not empty
任何人都可以在这里说些什么?
由于
答案 0 :(得分:0)
首先,您发布了此文件的文件名称,但不满足。接下来在你的cURL中你正在使用一些标题...
我认为你需要这样的东西:
$ua->default_header('Name' => "1");
my $response = $ua->post( $url,
Content_Type => 'multipart/form-data',
Content => [ $field_name => $value ]
);
print $response->content;