设为首页 收藏本站
查看: 1801|回复: 0

FTP图片上传到异地服务器

[复制链接]

尚未签到

发表于 2015-5-27 09:51:38 | 显示全部楼层 |阅读模式
#region 创建文件夹  MakeFolder()
    ///     
    /// 创建文件夹   
    ///     
    /// 例如:/newDir   
    /// ftp地址(可带目录)
    /// ftp用户名
    /// ftp密码
    public void MakeFolder(string FolderName, string url, string userid, string password)
    {
        FtpWebRequest reqFTP;
        try
        {
            reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + url + FolderName));
            reqFTP.Method = WebRequestMethods.Ftp.MakeDirectory;
            reqFTP.UseBinary = true;
            reqFTP.Credentials = new NetworkCredential(userid, password);
            FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
            Stream ftpStream = response.GetResponseStream();
            ftpStream.Close();
            response.Close();
        }
        catch (Exception ex)
        {
            throw new Exception("此处是创建文件夹:"+ex.Message + "创建文件夹:ftp://" + url + FolderName + "不成功!");
        }
    }
///  
    /// 生成缩略图
    ///  
    /// 数据流
    /// 缩略图路径(ftp相对路径)
    /// 缩略图宽度
    /// 缩略图高度
    /// 生成缩略图的方式     
    public void MakeThumbnail(Stream stream, string thumbnailPath, int width, int height, string mode)
    {
        System.Drawing.Image originalImage = System.Drawing.Image.FromStream(stream);
        int towidth = width;
        int toheight = height;
        int x = 0;
        int y = 0;
        int ow = originalImage.Width;
        int oh = originalImage.Height;
        switch (mode)
        {
            case "HW"://指定高宽缩放(可能变形)                 
                break;
            case "W"://指定宽,高按比例                     
                toheight = originalImage.Height * width / originalImage.Width;
                break;
            case "H"://指定高,宽按比例
                towidth = originalImage.Width * height / originalImage.Height;
                break;
            case "Cut"://指定高宽裁减(不变形)                 
                if ((double)originalImage.Width / (double)originalImage.Height > (double)towidth / (double)toheight)
                {
                    oh = originalImage.Height;
                    ow = originalImage.Height * towidth / toheight;
                    y = 0;
                    x = (originalImage.Width - ow) / 2;
                }
                else
                {
                    ow = originalImage.Width;
                    oh = originalImage.Width * height / towidth;
                    x = 0;
                    y = (originalImage.Height - oh) / 2;
                }
                break;
            default:
                break;
        }
        //新建一个bmp图片
        System.Drawing.Image bitmap = new System.Drawing.Bitmap(towidth, toheight);
        //新建一个画板
        Graphics g = System.Drawing.Graphics.FromImage(bitmap);
        //设置高质量插值法
        g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
        //设置高质量,低速度呈现平滑程度
        g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
        //清空画布并以透明背景色填充
        g.Clear(Color.Transparent);
        //在指定位置并且按指定大小绘制原图片的指定部分
        g.DrawImage(originalImage, new Rectangle(0, 0, towidth, toheight),
            new Rectangle(x, y, ow, oh),
            GraphicsUnit.Pixel);
        try
        {
            MemoryStream temp = new MemoryStream();
            bitmap.Save(temp, System.Drawing.Imaging.ImageFormat.Jpeg);
            temp.Position = 0;
            
            UploadFileByFTP(this.ftpHost, this.ftpUserId, this.ftpPwd, temp, thumbnailPath);
        }
        catch (System.Exception e)
        {
            throw new Exception("此处是生成缩略图:"+e.Message+"生成缩略图失败!");
        }
        finally
        {
            originalImage.Dispose();
            bitmap.Dispose();
            g.Dispose();
        }
    }
  #region FTP上传文件方法,设定ftp下的保存路径,文件名  UploadFileByFTP()
    ///  
    /// FTP上传文件方法,设定ftp下的保存路径,文件名
    ///  
    /// ftp地址
    /// ftp用户名
    /// ftp密码
    /// 上传文件流
    /// 文件名(可带相对路径)
    /// throw
    protected void UploadFileByFTP(string ftpServerIP, string ftpUserID, string ftpPassword, Stream streamRead, string filename)
    {
        string l_notice = "";//上传提示
         string uri = string.Empty;
        //如果filename为空提示选择文件  
        if (filename == null || filename == "")
        {
            l_notice = "Please select File !";
        }
        else
        {
            try
            {
               
                if (filename.StartsWith("/"))
                {
                    filename = filename.Remove(0, 1);
                }
                uri = "ftp://" + ftpServerIP + "/" + filename;
                FtpWebRequest reqFTP;
                // 根据uri创建FtpWebRequest对象  
                reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
                // ftp用户名和密码  
                reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
                // 默认为true,连接不会被关闭  
                // 在一个命令之后被执行  
                reqFTP.KeepAlive = false;
                // 指定执行命令  
                reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
                // 指定数据传输类型  
                reqFTP.UseBinary = true;
                // 上传文件时通知服务器文件的大小  
                reqFTP.ContentLength = streamRead.Length;
                // 缓冲大小设置为5kb  
                int buffLength = 5048;
                byte[] buff = new byte[buffLength];
                int contentLen;
                Stream streamWrite = reqFTP.GetRequestStream();
                streamRead.Flush();
                contentLen = streamRead.Read(buff, 0, buffLength);
                while (contentLen != 0)
                {
                    streamWrite.Write(buff, 0, contentLen);
                    contentLen = streamRead.Read(buff, 0, buffLength);
                }
                // 关闭两个流  
                streamWrite.Close();
            }
            catch (Exception ex)
            {
                throw new Exception("此处是上传方法:"+ex.Message + "ftp路径:" + uri);
            }
        }
        Response.Write(l_notice);
    }

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-71122-1-1.html 上篇帖子: 用vsftp建立个人ftp站点 下篇帖子: 如何使用FTP下载、上载文件和如何列出目录内容。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表