示例#1
0
        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();
                }
            }
        }
示例#4
0
        /// <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);
            }
        }