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); }
/// <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); }