Example #1
0
        /// <summary>
        ///     上传文件
        /// </summary>
        /// <param name="file">FileUpload</param>
        /// <param name="filePath">要保存的文件路径,</param>
        /// <param name="lstFileType">允许上传的文件类型,大小,单位为KB,Size=0表示无任何限制</param>
        /// <param name="fileName">自定义文件名称</param>
        public stuUpLoadFile Upload(HttpPostedFile file, string filePath, string fileName,
                                    List <stuUpLoadFileType> lstFileType = null)
        {
            var uploadFile = new stuUpLoadFile {
                ErrorMessage = string.Empty
            };

            filePath = Url.ConvertPath(filePath);
            if (!filePath.EndsWith("/"))
            {
                filePath += "/";
            }

            //判断根目录,保存目录是否为空
            if (string.IsNullOrWhiteSpace(filePath))
            {
                uploadFile.ErrorMessage = "保存路径没有填写,请联系管理员!";
                return(uploadFile);
            }

            // 检测上传文件的合法性
            if (!CheckFile(file, ref uploadFile, lstFileType))
            {
                return(uploadFile);
            }

            #region   文件操作

            try
            {
                #region 创建文件目录(任何级别目录)

                var fileMapPath = Webs.GetMapPath(filePath); //获取目录绝对路径
                Directory.CreateDirectory(fileMapPath);

                #endregion

                file.SaveAs(fileMapPath + fileName);

                uploadFile.FileName          = fileName;
                uploadFile.FileNamePrefix    = Path.GetFileNameWithoutExtension(fileName);
                uploadFile.FileNameExtension = Path.GetExtension(fileName);
                uploadFile.Size        = file.ContentLength >= 1024 ? file.ContentLength / 1024 : 1;
                uploadFile.FilePath    = filePath;
                uploadFile.FileMapPath = fileMapPath;
                uploadFile.IsSuccess   = true;
            }

            catch (Exception Ex)
            {
                uploadFile.IsSuccess    = false;
                uploadFile.ErrorMessage = Ex.Message;
                return(uploadFile);
            }

            #endregion

            return(uploadFile);
        }
Example #2
0
        /// <summary>
        ///     上传文件
        /// </summary>
        /// <param name="file">FileUpload</param>
        /// <param name="filePath">要保存的文件路径,</param>
        /// <param name="lstFileType">允许上传的文件类型,大小,单位为KB,Size=0表示无任何限制</param>
        /// <param name="fileName">自定义文件名称</param>
        public stuUpLoadFile Upload(HttpPostedFile file, string filePath, string fileName,
                                    List<stuUpLoadFileType> lstFileType = null)
        {
            var uploadFile = new stuUpLoadFile {ErrorMessage = string.Empty};
            filePath = Url.ConvertPath(filePath);
            if (!filePath.EndsWith("/"))
            {
                filePath += "/";
            }

            //判断根目录,保存目录是否为空
            if (string.IsNullOrWhiteSpace(filePath))
            {
                uploadFile.ErrorMessage = "保存路径没有填写,请联系管理员!";
                return uploadFile;
            }

            // 检测上传文件的合法性
            if (!CheckFile(file, ref uploadFile, lstFileType))
            {
                return uploadFile;
            }

            #region 上传文件操作

            try
            {
                #region 创建文件目录(任何级别目录)

                var fileMapPath = Webs.GetMapPath(filePath); //获取目录绝对路径
                Directory.CreateDirectory(fileMapPath);

                #endregion

                file.SaveAs(fileMapPath + fileName);

                uploadFile.FileName = fileName;
                uploadFile.FileNamePrefix = Path.GetFileNameWithoutExtension(fileName);
                uploadFile.FileNameExtension = Path.GetExtension(fileName);
                uploadFile.Size = file.ContentLength >= 1024 ? file.ContentLength/1024 : 1;
                uploadFile.FilePath = filePath;
                uploadFile.FileMapPath = fileMapPath;
                uploadFile.IsSuccess = true;
            }

            catch (Exception Ex)
            {
                uploadFile.IsSuccess = false;
                uploadFile.ErrorMessage = Ex.Message;
                return uploadFile;
            }

            #endregion

            return uploadFile;
        }
Example #3
0
        /// <summary>
        ///     检查每个文件的合法检验
        /// </summary>
        private bool CheckFile(HttpPostedFile file, ref stuUpLoadFile uploadFile,
                               List<stuUpLoadFileType> lstFileType = null)
        {
            //获取文件名前缀
            var fileNamePrefix = Path.GetFileNameWithoutExtension(file.FileName);
            //获取文件名后缀
            var fileNameExtension = file.FileName.LastIndexOf('.') > -1
                                           ? Path.GetExtension(file.FileName).Substring(1)
                                           : Path.GetExtension(file.FileName);

            //文件容量
            var fileContentLength = file.ContentLength/1024;

            if (string.IsNullOrWhiteSpace(file.FileName))
            {
                uploadFile.ErrorMessage = "未检测到文件上传!";
                return false;
            }
            if (string.IsNullOrWhiteSpace(fileNamePrefix))
            {
                uploadFile.ErrorMessage = "文件: [ " + file.FileName + " ] 前缀名不能为空";
                return false;
            }
            if (file.ContentLength > 0 && fileContentLength == 0)
            {
                fileContentLength = 1;
            }
            if (fileContentLength <= 0)
            {
                uploadFile.ErrorMessage = "文件: [ " + file.FileName + " ] 的大小不能为0KB";
                return false;
            }

            //循环文件类型,长度
            if (lstFileType == null || lstFileType.Count == 0)
            {
                return true;
            }

            //true表示属于允许上传的类型
            var isfileExtension = false;
            foreach (var fileType in lstFileType)
            {
                //判断文件类型,长度是否允许上传
                if (!fileNameExtension.IsEquals(fileType.type))
                {
                    continue;
                }
                isfileExtension = true;

                //判断文件容量是否超过上限
                if (fileType.size != 0 && fileContentLength > fileType.size)
                {
                    uploadFile.ErrorMessage = string.Format("文件类型为 [ {0} ] 的容量不能超过: [ {1} KB ]", fileType.type,
                                                            fileType.size);
                    return false;
                }
                break;
            }

            if (!isfileExtension)
            {
                uploadFile.ErrorMessage = string.Format("文件扩展名: [ {0} ] 不允许上传", fileNameExtension);
                return false;
            }

            return true;
        }
Example #4
0
        /// <summary>
        ///     检查每个文件的合法检验
        /// </summary>
        private bool CheckFile(HttpPostedFile file, ref stuUpLoadFile uploadFile,
                               List <stuUpLoadFileType> lstFileType = null)
        {
            //获取文件名前缀
            var fileNamePrefix = Path.GetFileNameWithoutExtension(file.FileName);
            //获取文件名后缀
            var fileNameExtension = file.FileName.LastIndexOf('.') > -1
                                           ? Path.GetExtension(file.FileName).Substring(1)
                                           : Path.GetExtension(file.FileName);

            //文件容量
            var fileContentLength = file.ContentLength / 1024;

            if (string.IsNullOrWhiteSpace(file.FileName))
            {
                uploadFile.ErrorMessage = "未检测到文件上传!";
                return(false);
            }
            if (string.IsNullOrWhiteSpace(fileNamePrefix))
            {
                uploadFile.ErrorMessage = "文件: [ " + file.FileName + " ] 前缀名不能为空";
                return(false);
            }
            if (file.ContentLength > 0 && fileContentLength == 0)
            {
                fileContentLength = 1;
            }
            if (fileContentLength <= 0)
            {
                uploadFile.ErrorMessage = "文件: [ " + file.FileName + " ] 的大小不能为0KB";
                return(false);
            }

            //循环文件类型,长度
            if (lstFileType == null || lstFileType.Count == 0)
            {
                return(true);
            }

            //true表示属于允许上传的类型
            var isfileExtension = false;

            foreach (var fileType in lstFileType)
            {
                //判断文件类型,长度是否允许上传
                if (!fileNameExtension.IsEquals(fileType.type))
                {
                    continue;
                }
                isfileExtension = true;

                //判断文件容量是否超过上限
                if (fileType.size != 0 && fileContentLength > fileType.size)
                {
                    uploadFile.ErrorMessage = string.Format("文件类型为 [ {0} ] 的容量不能超过: [ {1} KB ]", fileType.type,
                                                            fileType.size);
                    return(false);
                }
                break;
            }

            if (!isfileExtension)
            {
                uploadFile.ErrorMessage = string.Format("文件扩展名: [ {0} ] 不允许上传", fileNameExtension);
                return(false);
            }

            return(true);
        }