php 实现远程图片下载并保存到本地

  1. /*
  2. *功能:php完美实现下载远程图片保存到本地
  3. *参数:文件url,保存文件目录,保存文件名称,使用的下载方式
  4. *当保存文件名称为空时则使用远程文件原来的名称
  5. */
  6. function getImage($url,$save_dir='',$filename='',$type=){
  7. if(trim($url)==''){
  8. return array('file_name'=>'','save_path'=>'','error'=>);
  9. }
  10. if(trim($save_dir)==''){
  11. $save_dir='./';
  12. }
  13. if(trim($filename)==''){//保存文件名
  14. $ext=strrchr($url,'.');
  15. if($ext!='.gif'&&$ext!='.jpg'){
  16. return array('file_name'=>'','save_path'=>'','error'=>);
  17. }
  18. $filename=time().$ext;
  19. }
  20. if(!==strrpos($save_dir,'/')){
  21. $save_dir.='/';
  22. }
  23. //创建保存目录
  24. if(!file_exists($save_dir)&&!mkdir($save_dir,,true)){
  25. return array('file_name'=>'','save_path'=>'','error'=>);
  26. }
  27. //获取远程文件所采用的方法
  28. if($type){
  29. $ch=curl_init();
  30. $timeout=;
  31. curl_setopt($ch,CURLOPT_URL,$url);
  32. curl_setopt($ch,CURLOPT_RETURNTRANSFER,);
  33. curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
  34. $img=curl_exec($ch);
  35. curl_close($ch);
  36. }else{
  37. ob_start();
  38. readfile($url);
  39. $img=ob_get_contents();
  40. ob_end_clean();
  41. }
  42. //$size=strlen($img);
  43. //文件大小
  44. $fp2=@fopen($save_dir.$filename,'a');
  45. fwrite($fp2,$img);
  46. fclose($fp2);
  47. unset($img,$url);
  48. return array('file_name'=>$filename,'save_path'=>$save_dir.$filename,'error'=>);
  49. }
  50.  
  51. $file_url = "https://img3.doubanio.com/view/photo/s_ratio_poster/public/p1910813120.jpg";
  52.  
  53. getImage($file_url);

注意下载路径需要有写入的权限

运行程序后会将图片保存到当前路径下,如图:

Python 实现远程图片下载并保存到本地

  1. def save_img(url):
  2. import requests
  3. import os
  4. file_name = url.split("/")[-]
  5. try:
  6. r = requests.get(url)
  7. except:
  8. print("远程连接错误")
  9. return -
  10. try:
  11. if not os.path.exists("movie"):
  12. os.makedirs("movie")
  13. os.chdir("movie")
  14. with open(file_name, 'wb') as f:
  15. f.write(r.content)
  16. except:
  17. print("文件保存错误")
  18. return -
  19. if save_img(url) == -:
  20. print("Download Error")
  21. else:
  22. print("Download Succeed!")

判断当前路径下是否存在 movie 文件夹,不存在则创建;

切换到 movie 文件夹下;

将远程图片以二进制文件的形式写入;

执行成功后会在当前路径下生成一个 movie/p1910813120.jpg

Python/PHP 远程文件/图片 下载的更多相关文章

  1. Python实战:美女图片下载器,海量图片任你下载

    Python应用现在如火如荼,应用范围很广.因其效率高开发迅速的优势,快速进入编程语言排行榜前几名.本系列文章致力于可以全面系统的介绍Python语言开发知识和相关知识总结.希望大家能够快速入门并学习 ...

  2. python做一个简易图片下载工具

    代码有点乱,先这样 # -*- coding:utf-8 -*- #__author__ :kusy #__content__:文件说明 #__date__:2018/11/01 11:01 impo ...

  3. Python 爬虫学习 网页图片下载

    使用正则表达式匹配 # coding:utf-8 import re import urllib def get_content(url): """ Evilxr, &q ...

  4. Bing图片下载器(Python实现)

    分享一个Python实现的Bing图片下载器.下载首页图片并保存到到当前目录.其中用到了正则库re以及Request库. 大致流程如下: 1.Request抓取首页数据 2.re正则匹配首页图片URL ...

  5. Python Cdn平台文件md5验证

    第一步 先用脚本实现基本的md5验证 1.python如何实现文件的下载 方法一: 使用 urllib 模块提供的 urlretrieve() 函数.urlretrieve() 方法直接将远程数据下载 ...

  6. 基于Python——实现远程下载sftp文件(只下载.zip文件)

    [背景]远程下载发布包等文件时,总是要使用WinSCP等工具登陆拖动.今天就介绍一种使用python下载文件到本地的方法. [代码实现] import paramiko # paramiko模块,基于 ...

  7. 下载远程(第三方服务器)文件、图片,保存到本地(服务器)的方法、保存抓取远程文件、图片 将图片的二进制字节字符串在HTML页面以图片形式输出 asp.net 文件 操作方法

    下载远程(第三方服务器)文件.图片,保存到本地(服务器)的方法.保存抓取远程文件.图片   将一台服务器的文件.图片,保存(下载)到另外一台服务器进行保存的方法: 1 #region 图片下载 2 3 ...

  8. 第三百四十一节,Python分布式爬虫打造搜索引擎Scrapy精讲—编写spiders爬虫文件循环抓取内容—meta属性返回指定值给回调函数—Scrapy内置图片下载器

    第三百四十一节,Python分布式爬虫打造搜索引擎Scrapy精讲—编写spiders爬虫文件循环抓取内容—meta属性返回指定值给回调函数—Scrapy内置图片下载器 编写spiders爬虫文件循环 ...

  9. 再见Xshell、Xftp!Python执行Linux命令、上传下载远程文件

    相信大家应该都接触过Linux操作系统(Ubuntu.Centos等),那么在使用的Linux操作系统需要使用一些远程ssh工具,尤其是公网服务器. 常用的ssh工具主要有:Xshell.MobaXt ...

随机推荐

  1. c++ STL stack容器成员函数

    这是后进先出的栈,成员函数比较简单,因为只能操作栈顶的元素.不提供清除什么的函数. 函数 描述 bool s.empty() 栈是否为空(即size=0).若空,返回true,否则,false. vo ...

  2. DOM编程艺术-setTimeout,"moveElement('"+elementID+"',"+final_x+","+final_y+","+interval+")"

    DOM编程艺术一个小demo,看到这里的时候不理解 "moveElement('"+elementID+"',"+final_x+","+f ...

  3. 比特币中P2SH(pay-to-script-hash)多重签名的锁定脚本和解锁脚本

    P2SH(pay-to-script-hash)多重签名的脚本 P2SH是多重签名的一种应用形式.在P2SH的交易中,多了一个Redeem Script的概念,称为赎回脚本.当向P2SH脚本的地址转账 ...

  4. autoreleasing on a thread

    So basically, if you are running on OS X 10.9+ or iOS 7+, autoreleasing on a thread without a pool s ...

  5. py2exe --- show error: MSVCP90.dll + matplotlib issues

    问题1: show error: MSVCP90.dll: No such file or directory 创建生成exe文件的脚本添加: import py2exe from distutils ...

  6. python setup.py install 报错

    python setup.py install 报错信息 [root@VM_25_28_centos psutil-2.0.0]# python setup.py install running in ...

  7. icon踩坑记录

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. Mybatis自查询递归查找子

    先看一下数据库 主键id,名称product_code,父parent,和kind 设计菜单类 setter,getter Dao public interface ProductMapper { L ...

  9. java Html&JavaScript面试题:判断第二个日期比第一个日期大

    如何用脚本判断用户输入的的字符串是下面的时间格式2004-11-21 必须要保证用户的输入是此格式,并且是时间,比如说月份不大于12等等,另外我需要用户输入两个,并且后一个要比前一个晚,只允许用JAV ...

  10. 微信小程序的开发——01小程序的执行流程是怎样的?

    作者:叶小钗 转载至:https://www.cnblogs.com/yexiaochai/p/9346043.html 我们这边最近一直在做基础服务,这一切都是为了完善技术体系,这里对于前端来说便是 ...