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

文件上传类(包含FTP方式和本地方式),可多文件上传,上传结果以json格式数据返回(可上传最大2G文件)

[复制链接]

尚未签到

发表于 2015-5-29 06:08:09 | 显示全部楼层 |阅读模式
首先感谢http://www.iyunv.com/name-lh/archive/2007/04/28/731528.html
name-lh提供的封装完整的FTP类

FTP用户名密码这些信息以及上传文件夹名称这些信息可以从website里面的config文件夹里面对应的文件设置。

引用了jquery,主要是为了引用多文件上传辅助插件:jquery.MultiFile
目前最新版本是:jquery.MultiFile-1.47.pack.js
  

  上传后返回上传文件信息,以JSON格式数据返回,方便前台js调用
  
  {"uploadinfo":[{"error":"","success":"20100512171211299064.jpg上传成 功!","fileinfo":{"fullpath":"Upload\/Blogs\/201007 \/20100729271249977046.jpg","filename":"20100729271249977046.jpg","fileextname":".jpg","filelength":"548KB","savepath":"Upload \/Blogs\/201007\//","id":"0"}}, {"error":"","success":"20100513301152672947.jpg上传成功!","fileinfo": {"fullpath":"Upload\/Blogs\/201007 \/20100729271249249466.jpg","filename":"20100729271249249466.jpg","fileextname":".jpg","filelength":"759KB","savepath":"Upload \/Blogs\/201007\//","id":"1"}}, {"error":"","success":"20100519281023870058.jpg上传成功!","fileinfo": {"fullpath":"Upload\/Blogs\/201007 \/20100729271249827587.jpg","filename":"20100729271249827587.jpg","fileextname":".jpg","filelength":"858KB","savepath":"Upload \/Blogs\/201007\//","id":"2"}}],"errorext":"每次最多只能上传3个文 件!","total":"5","successnum":"3"}
  
  这是上传后返回的信息例子,error表示该文件上传中的出错信息,success表示上传成功信息(其中的文件名是文件上传前的原文件名)。fileinfo表示上传的文件的详细信息,其中fullpath表示上传文件的路径(包含文件名) ,filename表示上传的文件的新文件名。fileextname表示上传文件的扩展名。filelength表示文件大小,savapath表示文件的路径(不包含文件名),id表示第几个上传的文件(从0开始),errorext表示所有文件上传中的错误信息(主要是指是否超过指定的上传文件数),total表示总共上传几个文件,successnum表示成功上传了几个文件。

  
  

  上传核心函数:
  
  

DSC0000.gif DSC0001.gif 上传核心函数

        ///
        /// 上传文件
        ///
        /// _num=1,表示修改文件名 0不修改文件名
        /// 上传到不同类型的目录,如博客,新闻,图片,论坛
        ///
        public string Upload(int _num , UploadType type)
        {
            switch (type)
            {
                case UploadType.News:
                    SetFilePath(NewsRoot);
                    break;
                case UploadType.Blog:
                    SetFilePath(BlogsRoot);
                    break;
                case UploadType.Forum:
                    SetFilePath(ForumRoot);
                    break;
                case UploadType.Photo:
                    SetFilePath(PhotoRoot);
                    break;
                default:
                    break;
            }

            byte[] file;     //// 统一转换为byte数组处理

            string resutl = string.Empty;   ////返回值

            StringBuilder uploadmsg = new StringBuilder(); ////保存上传信息

            uploadmsg.Append("{\"uploadinfo\":[");

            string errorext = string.Empty;  ////保存错误信息扩展

            int successnum = 0;   ////保存上传成功的个数

            for (int i = 0; i < filecollection.Count; i++)
            {
                string error = string.Empty;  ////保存错误信息
                string message = string.Empty;  ////保存上传信息
                string success = string.Empty;   ////保存正确信息
                string filemsg = string.Empty;   ////保存文件信息

                if (filenumbers != 0 && i > filenumbers)
                {
                    errorext = "每次最多只能上传" + (filenumbers + 1) + "个文件!";
                }
                else
                {
                    HttpPostedFile postedfile = filecollection;

                    file = new Byte[postedfile.ContentLength];    //// 初始化byte长度.
                    // 转换为byte类型
                    System.IO.Stream stream = postedfile.InputStream;
                    stream.Read(file, 0, postedfile.ContentLength);
                    stream.Close();

                    if (file.Length != 0)
                    {

                        // Extension = "jpg";
                        string fileName = PathToName(postedfile.FileName); ////获取所上传文件名称(原始文件名)
                        string extname = Utils.GetPostfixStr(fileName);

                        uploadedextname = extname;  ////上传后的扩展名

                        if (extname.Length == 0)
                        {
                            error = "你未设置上传文件类型,系统不允许进行下一步操作!";
                        }
                        else
                        {
                            if (("," + extension + ",").IndexOf("," + extname + ",") < 0)
                            {
                                error = "只允许上传" + extension + " 文件!";
                            }
                            else
                            {
                                if (file.Length > maxfilelength)
                                {
                                    error = "上传文件限制大小:" + FileLength / 1024 + "kb!";
                                }
                                else
                                {
                                    filelength = file.Length;
                                    if (_num == 1)
                                    {
                                        string _Randstr = Rand.Number(6);
                                        string _tmps = string.Empty;  //// DateTime.Now.Month + DateTime.Now.Day + "-" + _Randstr + "-" + fileName;
                                        _tmps = string.Concat(new object[] { DateTime.Now.ToString("yyyyMMddmmhhss"), _Randstr, extname });   ////上传后已更改的新文件名
                                        uploadedfilename = _tmps;

                                    }
                                    else
                                    {
                                        uploadedfilename = fileName;
                                    }

                                    fullpath = savePath + uploadedfilename;

                                    try
                                    {
                                        System.IO.FileStream fs = new System.IO.FileStream(Utils.MapPath(fullpath), System.IO.FileMode.Create, System.IO.FileAccess.Write);
                                        fs.Write(file, 0, file.Length);
                                        fs.Flush();
                                        fs.Close();
                                        success = fileName + "上传成功!";
                                        successnum = successnum + 1;
                                    }
                                    catch (Exception ex)
                                    {
                                        Utils.savePublicLogFiles("文件上传", ex.Message, "");
                                        error = fileName + "上传失败!";
                                    }

                                }

                            }
                        }
                    }
                    else
                    {
                        error = "尚未选择要上传的文件";
                    }

                }

                if (string.IsNullOrEmpty(errorext))
                {
                    filemsg = "\"fileinfo\":{\"fullpath\":\"" + Utils.JsonCharFilter(fullpath) + "\",\"filename\":\"" + Utils.JsonCharFilter(uploadedfilename) + "\",\"fileextname\":\"" + Utils.JsonCharFilter(uploadedextname) + "\",\"filelength\":\"" + filelength / 1024 + "KB\",\"savepath\":\"" + Utils.JsonCharFilter(savePath) + "/\",\"id\":\"" + i + "\"}";
                    message = "{\"error\":\"" + Utils.JsonCharFilter(error) + "\",\"success\":\"" + Utils.JsonCharFilter(success) + "\"," + filemsg + "}";

                    uploadmsg.Append(message);
                    uploadmsg.Append(",");

                }
            }

            resutl = Utils.DelLastComma(uploadmsg.ToString().Trim());

            resutl = resutl + "],\"errorext\":\"" + Utils.JsonCharFilter(errorext) + "\"" + ",\"total\":\"" + filecollection.Count + "\",\"successnum\":\"" + successnum + "\"}";

            uploadmsg = null;

            filecollection = null;

            return resutl;
        }
  

DSC0002.png
  
  废话不多说了,源代码附在后面,有什么问题欢迎您联系我。
程序源码,点此下载
  

运维网声明 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-71621-1-1.html 上篇帖子: 用AppendFile命令判断能否删除FTP上的文件 下篇帖子: Windows 下ftp命令基本使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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