本文目录一览:
- 1、php 怎么从网上下载图片到本地
- 2、PHP如何自动下载图片并存入文件中,不是那种触发后会弹出窗口的而是能自动在后台完成的
- 3、php 把图片下载本地保存到指定目录中
- 4、PHP 怎样实现图片下载,而不是打开
php 怎么从网上下载图片到本地
我想告诉你,除了显示网址,然后“另存为”或者用迅雷之类的下载外,php真的还无法下载到本地,好像是因为权限什么的。
我琢磨了好久都不可能下载到本地,除非你的服务器是建立在本地的。
我自己写了一个函数,用来拷贝图片的,用copy()不行。
你可以看看,其他文件格式同理。
//----------------------拷贝图片(包括网络图片)到指定网址------------------
//-------适用于图片类型包括:jpeg、gif、png-----------
function down_image($url1,$url2){//---$url1为源网址,$url2为目标网址---
$url1_info=pathinfo($url1);
$url2_info=pathinfo($url2);
$msg="拷贝成功!";
if($url1_info[extension]==$url2_info[extension]){
switch ($url1_info[extension]){
case "jpg":
$img=imagecreatefromjpeg($url1);
imagejpeg($img, $url2);
break;
case "gif":
$img=imagecreatefromgif($url1);
imagegif($img, $url2);
break;
case "png":
$img=imagecreatefrompng($url1);
imagepng($img, $url2);
break;
}
}else{
$msg="文件类型不正确,拷贝失败";
}
return $msg;
}
PHP如何自动下载图片并存入文件中,不是那种触发后会弹出窗口的而是能自动在后台完成的
function download_remote_file($file_url, $save_to)
{
$content = file_get_contents($file_url);
file_put_contents($save_to, $content);
}
执行上边的方法$this-download_remote_file($from_url,$savename);
$from_url为图片的路径 $savename为要保存的路径(绝对路径)
php 把图片下载本地保存到指定目录中
/*
*@$url string 远程图片地址
*@$dir string 目录,可选 ,默认当前目录(相对路径)
*@$filename string 新文件名,可选
*/
function GrabImage($url, $dir='', $filename=''){
if(empty($url)){
return false;
}
$ext = strrchr($url, '.');
if($ext != '.gif' $ext != ".jpg" $ext != ".bmp"){
echo "格式不支持!";
return false;
}
//为空就当前目录
if(empty($dir))$dir = './';
//
$dir = realpath($dir);
//目录+文件
$filename = $dir . (empty($filename) ? '/'.time().$ext : '/'.$filename);
//开始捕捉
ob_start();
readfile($url);
$img = ob_get_contents();
ob_end_clean();
$size = strlen($img);
$fp2 = fopen($filename , "a");
fwrite($fp2, $img);
fclose($fp2);
return $filename;
}
//测试
GrabImage("此处网址/1.jpg", "as.gif");
// PS:目录存在,权限判断,自创建等自己应该知道!
//个人喜欢绝对路径所以就那么写了
PHP 怎样实现图片下载,而不是打开
代码如下:
?php
//对函数的说明
//参数说明 $file_name 文件名
//$file_sub_dir: 下载文件的子路径 '"/xxx/xxx/"
function down_file($file_name,$file_sub_dir){
//死去活来,演示下载一个图片.
//如果文件是中文.
//原因 php文件函数,比较古老,需要对中文转码 gb2312
$file_name=iconv("utf-8","gb2312",$file_name);
//绝对路径
$file_path=$_SERVER['DOCUMENT_ROOT'][
].$file_sub_dir.$file_name;
//1.打开文件
if(!file_exists($file_path)){
echo "文件不存在!";
return ;
}
$fp=fopen($file_path,"r");
//2.处理文件
//获取下载文件的大小
$file_size=filesize($file_path);
if($file_size30){
echo "script language='javascript'window.alert('过大')/script";
return ;
}
//返回的文件
header("Content-type: application/octet-stream");
//按照字节大小返回
header("Accept-Ranges: bytes");
//返回文件大小
header("Accept-Length: $file_size");
//这里客户端的弹出对话框,对应的文件名
header("Content-Disposition: attachment; filename=".$file_name);
//向客户端回送数据
$buffer=1024;
//为了下载的安全,我们最好做一个文件字节读取计数器
$file_count=0;
//这句话用于判断文件是否结束
while(!feof($fp) ($file_size-$file_count0) ){
$file_data=fread($fp,$buffer);
//统计读了多少个字节
$file_count+=$buffer;
//把部分数据回送给浏览器;
echo $file_data;
}
//关闭文件
fclose($fp);
}
//测试函数是否可用
down_file("顺平.jpg","/http/down/");
?