繁体   English   中英

PHP将文件下载到服务器

[英]PHP Download file to server

我正在尝试使用curl从php下载图像,但是不是将图像保存到服务器,而是将随机字符输出到Web浏览器屏幕,这是代码

$final['IMAGE'] = 'http://www.google.com/images/srpr/logo3w.png';

$imagename = trim(basename($final['IMAGE']));

$url  = $final['IMAGE'];
$path = '/media/import/';
$path .= $imagename;

$fp = fopen($path, 'w');

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_FILE, $fp);

$data = curl_exec($ch);

curl_close($ch);
fclose($fp);

curl_exec($ch); 将输出直接打印到屏幕上。 使用CURLOPT_RETURNTRANSFER -option时,可以停止他的行为:

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

有关更多信息,请参见PHP手册“ curl_setopt ”。

编辑

这个小脚本将文件下载到可写目录:

// file handler
$file = fopen(dirname(__FILE__) . '/test.png', 'w');
// cURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,'somethinsomething.com/something.png');
// set cURL options
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// set file handler option
curl_setopt($ch, CURLOPT_FILE, $file);
// execute cURL
curl_exec($ch);
// close cURL
curl_close($ch);
// close file
fclose($file);

这次是CURLOPT_FILE -option起作用了。 可以在与以前相同的链接上找到更多信息。

如果确定它们将是.png,则可以使用imagecreatefromstring()和imagepng():

$c = curl_init( $final['IMAGE'] );
curl_setopt( $c, CURLOPT_HEADER, 0 );
curl_setopt( $c, CURLOPT_RETURNTRANSFER, 1 );
$binary = curl_exec( $c );
curl_close( $c );

$imagename = trim(basename($final['IMAGE']));
$url  = $final['IMAGE'];
$path = '/media/import/';
$path .= $imagename;

$img = imagecreatefromstring( $binary );
imagepng( $img, $path, 0 );

您可以只使用copy():

copy("http://www.google.com/images/srpr/logo3w.png", "/media/import/logo3w.png");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM