针对于使用dtcms建站的网站建设公司多为中小型企业,以及个人建站,很多公司都不想为客户备案,备案虽然不收费但是备案比较麻烦
而且备案周期比较长,一般备案都需要服务器服务商初次审核,然后就是国家备案审核一般都需要20天左右,所以很多建站公司都选择了给客户使用香港服务器或者,美国等国外服务器,国外服务器的优点就是不用备案!所以大多数使用的都是国外虚拟空间,国外虚拟空间空间小一般都是500M空间,10G流量而且国外服务器,网速比较慢,所以如果把图片等静态资源放到国外服务器,就会导致国内访问网站网速比较慢,以及流量耗用比较大,容易出现问题!
针对此问题本人给dtcms增加了ftp上传功能,静态资源上传到国内虚拟空间上,从而导致静态资源占用国外空间以及流量的问题!
说了问题的需求原因那就开始做开发吧!
1,在网站配置,已经model层存储ftp信息,主要存储信息如下
model层sysconfig
private string _ftpuri = string.Empty;
private string _ftpfolder = string.Empty;
private string _ftpuser = string.Empty;
private string _ftppass = string.Empty;
private string _filedomain = string.Empty;
网站基础信息配置页面sys_config.aspx 增加配置
基础信息配置结束
2,在文件上传的地方,使用ftp上传
string newFilePath = upLoadPath + newFileName; //本地上传后的路径
if (sysConfig.fileserver == "ftp")
{
newFilePath = sysConfig.filedomain + '/' + sysConfig.ftpfolder + '/' + newFileName;
}
FtpWebRequest reqFTP;
// 根据uri创建FtpWebRequest对象
reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(sysConfig.ftpuri + sysConfig.ftpfolder + '/' + newFileName));
// ftp用户名和密码
reqFTP.Credentials = new NetworkCredential(sysConfig.ftpuser, sysConfig.ftppass);
reqFTP.UsePassive = false;
// 默认为true,连接不会被关闭
// 在一个命令之后被执行
reqFTP.KeepAlive = false;
// 指定执行什么命令
reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
// 指定数据传输类型
reqFTP.UseBinary = true;
// 上传文件时通知服务器文件的大小
reqFTP.ContentLength = byteData.Length;
Stream strm = reqFTP.GetRequestStream();
strm.Write(byteData, 0, byteData.Length);
strm.Close();
break;
ok至此已经全部完成,代码写的比较菜,等以后再优化吧!好在功能已经实现!
共有条评论 网友评论