FTP跨服务器上传图片(二)
来源:互联网 发布:java 数组接收 split 编辑:程序博客网 时间:2024/06/05 07:07
FTP跨服务器上传图片--FtpWeb类
1、创建FtpWeb.cs 文件
using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Net;using System.Web;namespace DeYangService{ public class FtpWeb { string ftpServerIP; string ftpRemotePath; string ftpUserID; string ftpPassword; string ftpURI; /// <summary> /// 连接FTP /// </summary> /// <param name="FtpServerIP">FTP连接地址</param> /// <param name="FtpRemotePath">指定FTP连接成功后的当前目录, 如果不指定即默认为根目录</param> /// <param name="FtpUserID">用户名</param> /// <param name="FtpPassword">密码</param> public FtpWeb(string FtpServerIP, string FtpRemotePath, string FtpUserID, string FtpPassword) { ftpServerIP = FtpServerIP; ftpRemotePath = FtpRemotePath; ftpUserID = FtpUserID; ftpPassword = FtpPassword; ftpURI = "ftp://" + ftpServerIP + "/" + ftpRemotePath + "/"; } private static bool ftpIsExistsFile(string dirName, string ftpHostIP, string username, string password) { bool flag = true; try { string uri = "ftp://" + ftpHostIP + "/" + dirName; System.Net.FtpWebRequest ftp = GetRequest(uri, username, password); ftp.Method = WebRequestMethods.Ftp.ListDirectory; FtpWebResponse response = (FtpWebResponse)ftp.GetResponse(); response.Close(); } catch (Exception) { flag = false; } return flag; } /// <summary> /// 创建文件夹 /// </summary> /// <param name="dirName"></param> public void MakeDir(string dirName) { FtpWebRequest reqFTP; try { // dirName = name of the directory to create. reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + dirName)); reqFTP.Method = WebRequestMethods.Ftp.MakeDirectory; reqFTP.UseBinary = true; reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword); FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse(); Stream ftpStream = response.GetResponseStream(); ftpStream.Close(); response.Close(); } catch (Exception ex) { } } /// <summary> /// 上传文件 /// </summary> /// <param name="httpfile">需要上传的文件</param> /// <param name="targetDir">目标路径</param> /// <param name="ext">文件类型</param> /// <param name="hostname">ftp地址</param> /// <param name="username">ftp用户名</param> /// <param name="password">ftp密码</param> /// <param name="ismakethumbnail">是否需要截图</param> /// <param name="isappmakethumbnail">是否需要截成app图</param> /// <summary> public static void UploadFile(HttpPostedFile httpfile, string targetDir, string ext,string hostname, string username, string password,bool ismakethumbnail,bool isappmakethumbnail) { string URI = "FTP://" + hostname + "/" + targetDir+ ext; System.Net.FtpWebRequest ftp = GetRequest(URI, username, password); //设置FTP命令 设置所要执行的FTP命令, ftp.Method = System.Net.WebRequestMethods.Ftp.UploadFile; //指定文件传输的数据类型 ftp.UseBinary = true; ftp.UsePassive = true; //告诉ftp文件大小 ftp.ContentLength = httpfile.ContentLength; //缓冲大小设置为2KB 1M const int BufferSize = 10240; byte[] content = new byte[BufferSize - 1 + 1]; int dataRead; //打开一个文件流 (System.IO.FileStream) 去读上传的文件 using (Stream fs = httpfile.InputStream) { //把上传的文件写入流 using (Stream rs = ftp.GetRequestStream()) { do { //每次读文件流的2KB dataRead = fs.Read(content, 0, BufferSize); rs.Write(content, 0, dataRead); } while (!(dataRead < BufferSize)); rs.Close(); } #region 截图 if (ismakethumbnail) { //小图 120*120 byte[] datamin = ThumbnailImage.MakeThumbnail(fs); MemoryStream m = new MemoryStream(datamin); UploadThumbnail(m, targetDir + "min", ext, hostname, username, password); m.Close(); ////中图 240*180 byte[] datamid = ThumbnailImage.MakeImage(fs, 240, 180); m = new MemoryStream(datamid); UploadThumbnail(m, targetDir + "mid", ext, hostname, username, password); m.Close(); } if (isappmakethumbnail) { ////手机适配的尺寸 1张图:400*100 多张图时:100*80 byte[] dataAppmid = ThumbnailImage.MakeImage(fs, 400, 100); MemoryStream m = new MemoryStream(dataAppmid); UploadThumbnail(m, targetDir + "appmid", ext, hostname, username, password); m.Close(); ////手机适配的尺寸 1张图:400*100 多张图时:100*80 byte[] dataAppmin = ThumbnailImage.MakeImage(fs, 100, 80); m = new MemoryStream(dataAppmin); UploadThumbnail(m, targetDir + "appmin", ext, hostname, username, password); m.Close(); } #endregion 截图 fs.Close(); } } /// <summary> /// 上传缩略图 /// </summary> /// <param name="httpfile">需要上传的文件</param> /// <param name="targetDir">目标路径</param> /// <param name="ext">文件类型</param> /// <param name="hostname"> ftp地址</param> /// <param name="username">ftp用户名</param> /// <param name="password">ftp密码</param> public static void UploadThumbnail(MemoryStream m, string targetDir, string ext, string hostname, string username, string password) { string URI = "FTP://" + hostname + "/" + targetDir + ext; System.Net.FtpWebRequest ftp = GetRequest(URI, username, password); //设置FTP命令 设置所要执行的FTP命令, ftp.Method = System.Net.WebRequestMethods.Ftp.UploadFile; //指定文件传输的数据类型 ftp.UseBinary = true; ftp.UsePassive = true; //告诉ftp文件大小 ftp.ContentLength = m.Length; //缓冲大小设置为2KB 1M const int BufferSize = 10240; byte[] content = new byte[BufferSize - 1 + 1]; int dataRead; //把上传的文件写入流 using (Stream rs = ftp.GetRequestStream()) { do { //每次读文件流的2KB dataRead = m.Read(content, 0, BufferSize); rs.Write(content, 0, dataRead); } while (!(dataRead < BufferSize)); rs.Close(); } m.Close(); } //// /// <summary> /// 得到ftp对象 /// </summary> /// <param name="URI">ftp地址</param> /// <param name="username">ftp用户名</param> /// <param name="password">ftp密码</param> /// <returns>返回ftp对象</returns> private static System.Net.FtpWebRequest GetRequest(string URI, string username, string password) { //根据服务器信息FtpWebRequest创建类的对象 FtpWebRequest result = (FtpWebRequest)FtpWebRequest.Create(URI); //提供身份验证信息 result.Credentials = new System.Net.NetworkCredential(username, password); //result.Credentials = new System.Net.NetworkCredential(); //设置请求完成之后是否保持到FTP服务器的控制连接,默认值为true result.KeepAlive = false; return result; } }}2、配置web.config 文件
<!--fpt 服务器用户名及账户及主机地址--> <add key="HOSTNAME" value="192.168.0.190"/> <add key="USER_NAME" value="lenovo"/> <add key="PASSWORD" value="123456"/>3、调用方法上传图片文件至图片服务器
注释:多张图片上传过程。
string fexts = "";string filepaths = ""; //file1,file2,file3 //已上传图片if (context.Request.Files.Count > 0){ int fcount = context.Request.Files.Count; for (int i = 0; i < fcount; i++) { string newpath = CloudTool.GetSavePath();// imgSavePath.GetPerImgSavePath(uid); string code = DateTime.Now.ToString("yyyyMMddhhmmssff"); string[] fileNameArray = context.Request.Files[i].FileName.Split(new char[] { '/' }); string fileName = System.IO.Path.GetFileName(context.Request.Files[i].FileName); string ext = fileName.Substring(fileName.LastIndexOf('.')).ToLower(); string sourpath = newpath + code + ext;//fileNameArray[fileNameArray.Length - 1]; string minpath = newpath + code + "min" + ext; string midpath = newpath + code + "mid" + ext; string Appmidpath = newpath + code + "appmid" + ext; string Appminpath = newpath + code + "appmin" + ext; txtareas += "图片"; string filepath = newpath + code; filepaths += filepath.Substring(3).Replace("\\", "\\\\");//保存文件路径 filepath = filepath + ext; fexts += ext; if (i < context.Request.Files.Count - 1) { filepaths += "`"; fexts += "`"; txtareas += "`"; } #region 保存到图片服务器 //1)图片服务器配置信息 ip、账户、密码 string hostname = CloudTool.GetAppSettingByKey("HOSTNAME"); string username = CloudTool.GetAppSettingByKey("USER_NAME"); string password = CloudTool.GetAppSettingByKey("PASSWORD"); //2)设置图片文件的名称及存放地址 DateTime dttime = DateTime.Now; string year = dttime.Year.ToString(); string month = dttime.Month.ToString(); string day = dttime.Day.ToString(); string hour = dttime.Hour.ToString(); var folder = year + "\\" + month + "\\" + day + "\\" + hour + "\\"; string dirName = folder + code; FtpWeb ftpweb1 = new FtpWeb(hostname, "", username, password); //3)创建文件夹目录 ftpweb1.MakeDir(folder); //4)上传图片 FtpWeb.UploadFile(context.Request.Files[i], dirName, ext, hostname, username, password, true,true); #endregion } } bool flag = false;//将图片地址保存到数据库 --自己编写//flag = zkDAL.createzkimg(nid, uid, txtname, zkey, typeid, zflag, txtcontent, txtauthor, filepaths, fexts, txtareas, tagkeys);
0 0
- FTP跨服务器上传图片(二)
- Nginx+Ftp+Fileinput做图片上传显示服务器(二)
- FTP跨服务器上传图片(一) 图片服务器配置
- 使用FTP上传图片到图片服务器
- Java实现将图片上传至服务器(FTP协议)
- Nginx+Ftp+Fileinput做图片上传显示服务器(一)
- Nginx+Ftp+Fileinput做图片上传显示服务器(三)
- Java实现FTP上传图片到服务器
- 将图片上传到FTP服务器
- Java上传图片到FTP服务器
- ftp图片服务器搭建!ftp上传到图片服务器,通过http协议读取图片
- 图片服务器搭建 ftp上传http协议读取图片
- FTP+nginx图片服务器上传图片异常解决
- 跨服务器上传图片
- 构建ftp服务器(二)
- 【Ts 3】Nginx的Http(图片)服务器配置+ftp上传使用说明
- FileZilla FTP服务器上传图片异常问题分析
- java FTP方式上传文件到图片服务器
- J2EE基础知识点总结
- lightoj 1010 找规律坑比题
- javascript 标签语句 二十二
- codec 编码
- 调整台式机电脑屏幕亮度的方法
- FTP跨服务器上传图片(二)
- Mr. Bender and Square
- Fragment里加载Activity界面
- 跳石头 NOIP2015 提高组 Day2 T1
- inline
- android中使用PopupWindow实现取消确定对话框
- 跟着鬼哥学爬虫-8-python微信-3-集合进去糗事百科!
- NDK各个版本链接
- Xcode8 新特性2