/// <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); }
/// <summary> /// Request.QueryString /// </summary> public static T QS <T>(string parmsName, T defValue = default(T)) { if (HttpContext.Current == null) { return(defValue); } var value = HttpContext.Current.Request.RequestContext.RouteData.Values[parmsName] ?? string.Empty; return(ConvertHelper.ConvertType(Webs.UrlDecode(value.ToString()), defValue)); }
/// <summary> /// 以指定的流,向客户端输出 /// </summary> /// <param name="fileStream"></param> /// <param name="fileName"></param> /// <param name="contentType">将文件输出时设置的ContentType</param> public static void OutPut(FileStream fileStream, string fileName, string contentType = "application/octet-stream") { var response = HttpContext.Current.Response; try { // 需要读的数据长度 var dataToRead = fileStream.Length; response.ContentType = contentType; response.AddHeader("Content-Disposition", "attachment;filename=" + Webs.UrlEncode(fileName).Replace("+", " ")); // 缓冲区为10k var buffer = new Byte[10000]; while (dataToRead > 0) { // 检查客户端是否还处于连接状态 if (HttpContext.Current.Response.IsClientConnected) { var length = fileStream.Read(buffer, 0, 10000); response.OutputStream.Write(buffer, 0, length); response.Flush(); buffer = new Byte[10000]; dataToRead = dataToRead - length; } else { // 如果不再连接则跳出死循环 dataToRead = -1; } } } catch (Exception ex) { response.Write("Error : " + ex.Message); } finally { if (fileStream != null) { fileStream.Close(); } response.End(); } }
/// <summary> /// Request.QueryString /// </summary> public static T QS <T>(string parmsName, T defValue) { return(HttpContext.Current == null ? defValue : ConvertHelper.ConvertType(Webs.UrlDecode(HttpContext.Current.Request.QueryString[parmsName] ?? string.Empty), defValue)); }