/// <summary>/// 远程上传从其他网站复制过来的图片/// </summary>public class RemoteUpload{/// <summary>/// 上传的源文件名称/// </summary>private string sOriginalFileName;/// <summary>/// 上传后的文件名称/// </summary>private string sSaveFileName;/// <summary>/// 结合 sContentPath 得取的带路径的上传路径名称/// </summary>private string sPathFileName;/// <summary>/// 上传需要建立目录的临时变量/// </summary>/// <permission cref="System.Security.PermissionSet">private</permission>private string sPath;/// <summary>/// 根据 sBaseUrl 参数转化后的路径(包含sUploadDir)路径/// </summary>private string sContentPath;/// <summary>/// 从HTML文本中下载远程图片/// </summary>/// <param name="sHTML">含有图片网址路径的HTML文本</param>/// <param name="path">保存的路径</param>/// <param name="Images">返回下载的所有图片文件,以“|”间隔!</param>/// <returns>返回替换远程图片路径的HTML文本</returns>public string RtnContent(string sHTML, string path,ref string Images ){string s_Content = sHTML;//设置为在上传内容中搜索指定值的正则表达式System.Text.RegularExpressions.MatchCollection mc = System.Text.RegularExpressions.Regex.Matches(sHTML, @"((http|https|ftp|rtsp|mms):(\/\/|\\\\){1}(([A-Za-z0-9_-])+[.]){1,}(net|com|cn|org|cc|tv|[0-9]{1,3})(\S*\/)((\S)+[.]{1}(gif|jpg|jpeg|bmp|png)))", System.Text.RegularExpressions.RegexOptions.IgnoreCase);string[] a_RemoteUrl = new string[mc.Count];//转入无重复数据for(int i = 0;i < mc.Count;i++){a_RemoteUrl[i] = (mc[i].Groups[0].ToString());}//保存的上传后的文件名称string SaveFileName;//文件类型string SaveFileType;//上传文件自动建目录标志(年月日)    sPath = this.CreateDateTimeDirectory("3");sContentPath = path + "upload/";string VisualPath = path + "upload/";sPath = (sPath.Trim().Equals(System.String.Empty) ? System.String.Empty : System.String.Concat(sPath, "/"));//如果不存在建立目录if(!Directory.Exists(System.IO.Path.Combine(sContentPath, sPath))){Directory.CreateDirectory(System.IO.Path.Combine(sContentPath, sPath));}sOriginalFileName = sOriginalFileName + "|";sSaveFileName = sSaveFileName + "|";sPathFileName = sPathFileName + "|";//遍历上传内容中允许的文件foreach(string str in a_RemoteUrl){//获取上传文件的扩展名SaveFileType = str.Substring(str.LastIndexOf(".") + 1).ToLower();//获取上传后的随机文件名SaveFileName = GetRndFileName(SaveFileType);//保存远程的文件到本地if(SaveRemoteFile(SaveFileName, str)){sOriginalFileName += str.Substring(str.LastIndexOf("/") + 1) + "|";sSaveFileName += SaveFileName + "|";sPathFileName += VisualPath + sPath + SaveFileName + "|";s_Content = s_Content.Replace(str, VisualPath + sPath + SaveFileName);                    }}sOriginalFileName = sOriginalFileName.Substring(0, sOriginalFileName.Length - 1);sSaveFileName = sSaveFileName.Substring(0, sSaveFileName.Length - 1);sPathFileName = sPathFileName.Substring(0, sPathFileName.Length - 1);Images = sPathFileName;return s_Content;}private string GetRndFileName(string filetype){string filename = StringHelper.RadomFileName();return filename + "." + filetype;}/// <summary>/// 保存远程的文件到本地/// </summary>/// <param name="s_LocalFileName">保存到本地文件名</param>/// <param name="s_RemoteFileUrl">远程读取的文件URL</param>/// <returns>如果保存成功则返回 true,否则返回 false</returns>/// <remarks>/// 此方法仅供内部使用,由 ReplaceRemoteUrl 进行调用/// </remarks>private bool SaveRemoteFile(string s_LocalFileName, string s_RemoteFileUrl){bool result = false;string AllowExt = ".jpe|.jpeg|.jpg|.png|.tif|.tiff|.bmp|.gif";//获取远程文件类型string sFileExt;sFileExt = s_RemoteFileUrl.Substring(s_RemoteFileUrl.LastIndexOf("."));if(AllowExt.IndexOf(sFileExt.ToLower()) == -1){result = false;}else{using (System.Net.WebClient wc = new System.Net.WebClient()){//下载远程文件资源        byte[] buff;try{buff = wc.DownloadData(s_RemoteFileUrl);}catch{return false;}if (buff.Length == 0)return false;if (buff.Length / 1024 > 512000)return false;using (System.IO.FileStream fs = new System.IO.FileStream(sContentPath + sPath + s_LocalFileName, System.IO.FileMode.Create, System.IO.FileAccess.Write)){fs.Write(buff, 0, buff.Length);fs.Close();}}//加上水印图片//try//{//    WebImages mark = new WebImages();//    FileStream fs = new FileStream(sContentPath + sPath + s_LocalFileName, FileMode.Open,FileAccess.Read);//    if(!mark.MakeWaterImage(fs, sContentPath + sPath + s_LocalFileName))//    {//        System.Drawing.Image img = System.Drawing.Image.FromStream(fs);//        img.Save(sContentPath + sPath + s_LocalFileName);//    }//    fs.Close();//    fs.Dispose();//    mark = null;//}//catch//{//}result = true;}return result;}/// <summary>/// /// </summary>/// <param name="sign"></param>/// <returns></returns>private string CreateDateTimeDirectory(System.String sign){string path = System.String.Empty;if(sign.Equals("0")){//不建立目录}else if(sign.Equals("1")){//以年为标志建立目录path = DateTime.Now.Year.ToString();}else if(sign.Equals("2")){//以年-月为标志建立目录path = System.String.Concat(DateTime.Now.Year.ToString(), "-", DateTime.Now.Month.ToString("00"));}else if(sign.Equals("3")){//以年-月-日为标志建立目录path = System.String.Concat(DateTime.Now.Year.ToString(), "-", DateTime.Now.Month.ToString("00"), "-", DateTime.Now.Day.ToString("00"));}return path;}}

转载于:https://www.cnblogs.com/acyy/archive/2012/08/29/2662252.html

通用类 RemoteUpload 远程上传从其他网站复制过来的图片相关推荐

  1. hdfs 小文件服务器,服务器远程上传hdfs文件大小

    服务器远程上传hdfs文件大小 内容精选 换一换 您需要提前准备好符合条件的镜像文件,并了解操作系统的已知问题(参见已知问题).表1中,文件系统.网络.驱动相关的配置需要在虚拟机内部完成,强烈建议您在 ...

  2. 手机上传日志文件给服务器,手机内容远程上传到服务器

    手机内容远程上传到服务器 内容精选 换一换 为加强对系统数据的容灾管理,云堡垒机支持配置日志备份,提高审计数据安全性和系统可扩展性.本小节主要介绍如何在系统配置OBS桶参数,将日志远程备份至OBS桶. ...

  3. CentOS7 网络配置之远程服务器设置、终端登陆和远程上传下载文件

    目录 一.概念 二.远程服务器设置.终端连接和远程上传下载文件 2.1 SSH协议 2.1.1 ssh服务器配置 2.1.2 终端连接 2.1.3 远程上传下载文件 2.2 Telnet协议 2.2. ...

  4. scp远程上传下载文件/文件夹

    scp远程上传下载文件/文件夹 从服务器下载整个目录 scp -r username@servername:remote_dir/ /tmp/local_dir例:scp -r root@192.16 ...

  5. 阿里云视频点播服务Vod工具类——实现视频上传、删除、播放

    阿里云视频点播服务Vod工具类--实现视频上传.删除.播放 阿里云视频点播服务Vod工具类 maven依赖 工具类实现 工具类的测试 获取视频 1. 获取单个视频的播放地址和ID: 2. 获取所有视频 ...

  6. Ubuntu SSH连接、远程上传下载文件

    Ubuntu SSH连接.远程上传下载文件 目录 SSH 概念 安装 SSH(Secure Shell) 服务以提供远程管理服务 将文件/文件夹从远程 Ubuntu 机拷至本地(scp) 将文件/文件 ...

  7. axios文件上传 formdata_基于业务场景下的图片/文件上传方案总结

    图片/文件上传组是企业项目开发中必不可少的环节之一, 但凡涉及到用户模块的都会有图片/文件上传需求, 在很多第三方组件库(ant desigin, element ui)中它也是基础组件之一. 接下来 ...

  8. Office文档上传后实时转换为PDF格式_图片文件上传后实时裁剪_实现在线预览Office文档

    Office文档上传后实时转换为PDF格式_图片文件上传后实时裁剪 前置条件 安装LibreOffice 安装OpenOffice 安装Unoconv 安装ImageMagick.x86_64 安装G ...

  9. Bmob+Luban(鲁班)压缩图片实现相册选择图片压缩后上传到Bmob后台Glide加载图片显示到本地

    源代码已上传CSDN:https://download.csdn.net/download/qq_16519957/11068345 因为本章需要跟前面的知识结合起来看所以就做了一个前面链接方便大家查 ...

最新文章

  1. 依赖注入@Autowired@Primary@Quelifier使用
  2. DumpMem and Monster - Virtual Memory Explorers on Windows Mobile/CE
  3. Linux学习之CentOS(七)--CentOS下j2ee环境搭建
  4. SQL Server复制需要有实际的服务器名称才能连接到服务器
  5. field module的on input和on request区别
  6. 让程序在崩溃时体面的退出之SEH
  7. 自己实现的atof()和atoi()代码 (转)
  8. Linux操作系统各版本ISO镜像下载(包括oracle linux\redhat\centos\u
  9. [iOS]如何把App打包成ipa文件,然后App上架流程[利用Application Loader]
  10. DevExpreess汉化使用方法及汉化包
  11. C#中实现byte[]与任意对象互换(服务端通讯专用)
  12. android 退出应用没有走ondestory方法,[Android基础论]为何Activity退出之后,系统没有调用onDestroy方法?...
  13. Django media 配置
  14. 只能用GUEST用户访问共享的解决办法
  15. 发现一个免费虚拟主机和云服务器的网站
  16. ctfhub git log泄露
  17. 通过静态LSP、LDP LSP、MPLS TE三种方式实现总部与分支的互通
  18. php 类型提示,PHP中的类型提示(type hinting)功能介绍
  19. java实现立方和等式
  20. 盘点2019年25大人工智能趋势

热门文章

  1. 用koa开发一套内容管理系统(CMS),支持javascript和typescript双语言
  2. 剑指offer 刷题 01
  3. ubuntu14.04行更新软件包
  4. 《Python语言程序设计》——2.10 增强型赋值运算符
  5. 【从零学习openCV】IOS7下的人脸检測
  6. MySQL和Python交互
  7. IT职场常见疾病之“颈椎病”
  8. 折腾了一晚上Windows网络却未果
  9. java -Djava.library.path -Djava.ext.dirs 的区别
  10. 《嵌入式Linux与物联网软件开发——C语言内核深度解析》一第1章 C语言与内存1.1 引言...