public void DownLoadHB(string group, string path, string fileName) { HttpWebRequest request = null; try { if (IsOpenHbUpload == "0") { throw new Exception("下载失败,服务连接资源服务器"); } string ucode = CurrentUser.UserCode; string url = DownloadUrl + "?RequestParam={%22Param%22:{%22envRoot%22:{%22UserName%22:%22" + ucode + "%22,%22Product%22:%22BIM%22},%22paramRoot%22:{%22FDFS_GROUP%22:%22" + group + "%22,%22FDFS_NAME%22:%22" + path + "%22}}}"; request = (HttpWebRequest)HttpWebRequest.Create(url); request.Method = "GET"; request.ContentType = "multipart/form-data"; string responseStr = string.Empty; using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("UTF-8")); responseStr = reader.ReadToEnd().ToString(); reader.Close(); if (!string.IsNullOrEmpty(responseStr)) { ResultDownUpload result = JsonConvert.DeserializeObject <ResultDownUpload>(responseStr);//将文件信息json字符 byte[] bytes = JavaBytesToNetBytes(result.responseMap.FILE_DATA); Response.ClearHeaders(); Response.Clear(); Response.Expires = 0; Response.Buffer = true; Response.AddHeader("Accept-Language", "zh-cn"); Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8)); Response.ContentType = "application/octet-stream;charset=gbk"; Response.BinaryWrite(bytes); Response.Flush(); Response.End(); } } } catch (Exception ex) { throw ex; } finally { if (request != null) { request.Abort(); } } }
/// <summary> /// 处理dmz区转发的文件下载请求 /// </summary> public ActionResult DownLoadHBHandle(string fileName) { string resultUpload = ""; try { string url = DownloadUrlBase + "?RequestParam=" + Request.Params["RequestParam"]; HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url); request.Method = "POST"; request.Timeout = 600000; request.ContentType = "application/octet-stream"; string responseStr = string.Empty; using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("UTF-8")); responseStr = reader.ReadToEnd().ToString(); reader.Close(); if (!string.IsNullOrEmpty(responseStr)) { ResultDownUpload result = JsonConvert.DeserializeObject <ResultDownUpload>(responseStr);//将文件信息json字符 byte[] bytesBasePlat = JavaBytesToNetBytes(result.responseMap.FILE_DATA); MemoryStream ms = new MemoryStream(bytesBasePlat); //本地存储路径 if (!Directory.Exists(TepmoraryPath)) { Directory.CreateDirectory(TepmoraryPath); } string pathFile = TepmoraryPath + Guid.NewGuid().ToString() + Path.GetExtension(fileName); FileStream fs = new FileStream(pathFile, FileMode.OpenOrCreate); ms.WriteTo(fs); ms.Close(); fs.Close(); //响应外网请求 resultUpload = UploadDMZ(pathFile, fileName); } } } catch (Exception ex) { throw ex; } return(Json(resultUpload)); }
public void DownLoadHB(string group, string path, string fileName) { HttpWebRequest request = null; try { if (IsOpenHbUpload == "1") { ////外网下载文件处理 //if (IsNetwork) //{ // string url = DownloadUrl + "?fileName=" + Server.UrlEncode(fileName) + "&RequestParam={%22Param%22:{%22envRoot%22:{%22UserName%22:%22" + UCode + "%22,%22Product%22:%22BIM%22},%22paramRoot%22:{%22FDFS_GROUP%22:%22" + group + "%22,%22FDFS_NAME%22:%22" + path + "%22}}}"; // request = (HttpWebRequest)HttpWebRequest.Create(url); // request.Method = "POST"; // request.Timeout = 600000; // request.ContentLength = 0; // request.ContentType = "application/json"; // string responseStr = string.Empty; // using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) // { // StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("UTF-8")); // responseStr = reader.ReadToEnd(); // reader.Close(); // if (!string.IsNullOrEmpty(responseStr)) // { // responseStr = responseStr.TrimEnd('"').TrimStart('"'); // FileInfo file = new FileInfo(responseStr);//创建一个文件对象 // FileStream stream = file.OpenRead(); // var bufferLength = stream.Length; // byte[] bytes = new byte[bufferLength]; // stream.Read(bytes, 0, Convert.ToInt32(bufferLength)); // stream.Flush(); // stream.Close(); // Response.Clear(); // // 设置缓冲输出为true,后台编辑的文件写到内存流中了 // Response.Buffer = true; // // 设置编码格式 ContentEncoding是管字节流到文本的,而Charset是管在浏览器中显示的 // //Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312"); // Response.Charset = "GBK"; // // 将HTTP头添加到输出流,指定默认名 // Response.AddHeader("Content-Disposition", string.Format(@"attachment;filename=""{0}""", HttpUtility.UrlEncode(fileName))); // Response.ContentEncoding = System.Text.Encoding.UTF8; // // 设置输出流的HTTP MIME类型 // Response.ContentType = "application/octet-stream;charset=gbk"; // Response.AddHeader("Content-Length", bytes.Length.ToString()); // // 将指定的文件写入HTTP内容输出流 // //Response.OutputStream.Write(bytes, 0, bytes.Length); // //防止文件名含中文出现乱码而进行编码 // //Response.BinaryWrite(bytes); // System.IO.Stream fs = this.Response.OutputStream; // fs.Write(bytes, 0, bytes.Length); // fs.Close(); // // 向客户端发送当前所有缓冲的输出 // Response.Flush(); // // 将当前所有缓冲的输出关闭 // Response.Close(); // // 下载成功后, 删除临时文件 // System.IO.File.Delete(responseStr); // } // } //} //else//内网处理逻辑 //{ string url = DownloadUrlBase + "?RequestParam={%22Param%22:{%22envRoot%22:{%22UserName%22:%22" + UCode + "%22,%22Product%22:%22BIM%22},%22paramRoot%22:{%22FDFS_GROUP%22:%22" + group + "%22,%22FDFS_NAME%22:%22" + path + "%22}}}"; request = (HttpWebRequest)HttpWebRequest.Create(url); request.Method = "POST"; request.Timeout = 600000; request.ContentType = "multipart/form-data"; string responseStr = string.Empty; using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("UTF-8")); responseStr = reader.ReadToEnd().ToString(); reader.Close(); if (!string.IsNullOrEmpty(responseStr)) { ResultDownUpload result = JsonConvert.DeserializeObject <ResultDownUpload>(responseStr);//将文件信息json字符 byte[] bytes = JavaBytesToNetBytes(result.responseMap.FILE_DATA); Response.ClearHeaders(); Response.Clear(); Response.Expires = 0; Response.Buffer = true; Response.AddHeader("Accept-Language", "zh-cn"); Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8)); Response.ContentType = "application/octet-stream;charset=gbk"; Response.BinaryWrite(bytes); Response.Flush(); Response.End(); } } //} } else { FileInfo file = new FileInfo(path);//创建一个文件对象 FileStream stream = file.OpenRead(); var bufferLength = stream.Length; byte[] bytes = new byte[bufferLength]; stream.Read(bytes, 0, Convert.ToInt32(bufferLength)); stream.Flush(); stream.Close(); Response.Clear(); // 设置缓冲输出为true,后台编辑的文件写到内存流中了 Response.Buffer = true; // 设置编码格式 ContentEncoding是管字节流到文本的,而Charset是管在浏览器中显示的 //Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312"); Response.Charset = "GBK"; // 将HTTP头添加到输出流,指定默认名 Response.AddHeader("Content-Disposition", string.Format(@"attachment;filename=""{0}""", HttpUtility.UrlEncode(fileName))); Response.ContentEncoding = System.Text.Encoding.UTF8; // 设置输出流的HTTP MIME类型 Response.ContentType = "application/octet-stream;charset=gbk"; Response.AddHeader("Content-Length", bytes.Length.ToString()); // 将指定的文件写入HTTP内容输出流 //Response.OutputStream.Write(bytes, 0, bytes.Length); //防止文件名含中文出现乱码而进行编码 //Response.BinaryWrite(bytes); System.IO.Stream fs = this.Response.OutputStream; fs.Write(bytes, 0, bytes.Length); fs.Close(); // 向客户端发送当前所有缓冲的输出 Response.Flush(); // 将当前所有缓冲的输出关闭 Response.Close(); } } catch (Exception ex) { throw ex; } finally { if (request != null) { request.Abort(); } } }
/// <summary> /// 获取附件文件流 /// </summary> /// <param name="group">资源组</param> /// <param name="path">资源路径</param> /// <param name="userCode">用户编码</param> /// <returns></returns> public static byte[] GetFilesBytes(string group, string path, string userCode, string fileName) { byte[] bytes; string tempPath = "c:\\temp\\"; // 判断是否启用本省资源服务器 string hbResourceUrl = ConfigurationManager.AppSettings["useHbResourceUrl"]; if ("false".Equals(hbResourceUrl)) { FileInfo file = file = new FileInfo(path);//创建一个文件对象 if (file.Exists) { FileStream stream = file.OpenRead(); var bufferLength = stream.Length; bytes = new byte[bufferLength]; stream.Read(bytes, 0, Convert.ToInt32(bufferLength)); stream.Flush(); stream.Close(); return(bytes); } else { return(new byte[0]); } } else { HttpWebRequest request = null; try { //string url = DownloadUrl + "?fileName=" + fileName + "&RequestParam={%22Param%22:{%22envRoot%22:{%22UserName%22:%22" + userCode + "%22,%22Product%22:%22BIM%22},%22paramRoot%22:{%22FDFS_GROUP%22:%22" + group + "%22,%22FDFS_NAME%22:%22" + path + "%22}}}"; string url = DownloadUrlBase + "?RequestParam={%22Param%22:{%22envRoot%22:{%22UserName%22:%22" + userCode + "%22,%22Product%22:%22BIM%22},%22paramRoot%22:{%22FDFS_GROUP%22:%22" + group + "%22,%22FDFS_NAME%22:%22" + path + "%22}}}"; request = (HttpWebRequest)HttpWebRequest.Create(url); request.Method = "POST"; request.Timeout = 600000; request.ContentType = "application/octet-stream"; string responseStr = string.Empty; using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("UTF-8")); responseStr = reader.ReadToEnd().ToString(); reader.Close(); if (!string.IsNullOrEmpty(responseStr)) { ResultDownUpload result = JsonConvert.DeserializeObject <ResultDownUpload>(responseStr);//将文件信息json字符 byte[] bytesBasePlat = JavaBytesToNetBytes(result.responseMap.FILE_DATA); MemoryStream ms = new MemoryStream(bytesBasePlat); //本地存储路径 if (!Directory.Exists(tempPath)) { Directory.CreateDirectory(tempPath); } string pathFile = tempPath + Guid.NewGuid().ToString() + Path.GetExtension(fileName); FileStream fs = new FileStream(pathFile, FileMode.OpenOrCreate); ms.WriteTo(fs); ms.Close(); fs.Close(); FileInfo file = new FileInfo(pathFile); FileStream stream = file.OpenRead(); var bufferLength = stream.Length; bytes = new byte[bufferLength]; stream.Read(bytes, 0, Convert.ToInt32(bufferLength)); stream.Flush(); stream.Close(); //// 下载成功后, 删除临时文件 //System.IO.File.Delete(pathFile); return(bytes); } } } catch (Exception ex) { } finally { if (request != null) { request.Abort(); } bytes = new byte[0]; } return(bytes); } }