Ejemplo n.º 1
0
        private static bool Upload(string dir, string localname, string fileName, byte[] file, ref FileUploadInfoResult uploadResult)
        {
            if (string.IsNullOrEmpty(dir))
            {
                return(false);
            }
            FileInfo formalFileInfo = new FileInfo(Path.Combine(dir, fileName));

            //判断正式目录是否存在,不存在则创建
            try
            {
                if (!Directory.Exists(formalFileInfo.DirectoryName))
                {
                    Directory.CreateDirectory(formalFileInfo.DirectoryName);
                }
            }
            catch (Exception ex)
            {
                uploadResult.err.Add("执行Exists或CreateDirectory失败," + ex.Message.ToString());
                return(false);
            }

            //判断是否在正式目录存在同名文件,存在则删除
            if (formalFileInfo.Exists)
            {
                try
                {
                    formalFileInfo.Delete();
                }
                catch (Exception ex)
                {
                    uploadResult.err.Add("执行Delete失败," + ex.Message.ToString());
                    return(false);
                }
            }

            try
            {
                System.IO.FileStream fs = new System.IO.FileStream(formalFileInfo.FullName, System.IO.FileMode.Create, System.IO.FileAccess.Write);
                fs.Write(file, 0, file.Length);
                fs.Flush();
                fs.Close();
            }
            catch (Exception ex)
            {
                uploadResult.err.Add(ex.Message.ToString());//错误信息
                return(false);
            }
            uploadResult.localname.Add(localname);              //原始文件名
            uploadResult.newname.Add(fileName);                 //新文件名称
            uploadResult.fullpath.Add(formalFileInfo.FullName); //全路径
            return(true);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 上传文件,同时上传多张文件
        /// </summary>
        /// <param name="param"></param>
        /// <param name="append"></param>
        /// <param name="fullpath"></param>
        /// <param name="err"></param>
        /// <returns></returns>
        public static bool UploadFileByHTML(FileUploadParam param, ref FileUploadInfoResult uploadResult)
        {
            //uploadResult = new FileUploadResult()
            //{
            //    localname = new List<string>(),
            //    newname = new List<string>(),
            //    fullpath = new List<string>(),
            //    err = new List<string>(),
            //};

            HttpFileCollection filecollection = param.request.Files;

            for (int index = 0; index < filecollection.Count; index++)
            {
                HttpPostedFile postedfile = filecollection.Get(index);
                // 读取原始文件名
                string localname = postedfile.FileName;
                byte[] file      = new Byte[postedfile.ContentLength]; // 统一转换为byte数组处理 // 初始化byte长度.

                // 转换为byte类型
                System.IO.Stream stream = postedfile.InputStream;
                stream.Read(file, 0, postedfile.ContentLength);
                stream.Close();

                if (file.Length == 0)
                {
                    uploadResult.err.Add("上传的文件无效");
                    return(false);
                }

                if (file.Length > param.maxattachsize)
                {
                    uploadResult.err.Add("文件大小超过" + SizeFormatNum2String(param.maxattachsize));
                    return(false);
                }

                uploadResult.filetype = param.fileType;

                #region   文件
                if (param.fileType == FileType.Image)
                {
                    if (!FileUploadHelper.ValidateImage(file))
                    {
                        uploadResult.err.Add("请上传有效的文件");
                        return(false);
                    }
                }

                // 取上载文件后缀名
                string extension = FileHelper.GetFileExtName(localname);
                if (param.upext.Split(',').Where(p => p.Contains(extension)).Count() <= 0)
                {
                    uploadResult.err.Add("上传文件扩展名必需为:" + param.upext);
                    return(false);
                }
                else
                {
                    string fileName   = FileUploadHelper.GetRndOnlyFileName(extension);
                    bool   resultFlag = Upload(param.fileDirectory, localname, fileName, file, ref uploadResult);
                    if (!resultFlag)
                    {
                        //上传失败直接返回
                        return(false);
                    }
                }
                #endregion

                file = null;
            }
            filecollection = null;
            return(true);
        }