108 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			108 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C#
		
	
	
	
| 
								 | 
							
								using System;
							 | 
						|||
| 
								 | 
							
								using System.Collections.Generic;
							 | 
						|||
| 
								 | 
							
								using System.Linq;
							 | 
						|||
| 
								 | 
							
								using System.Text;
							 | 
						|||
| 
								 | 
							
								using System.Collections;
							 | 
						|||
| 
								 | 
							
								using System.IO;
							 | 
						|||
| 
								 | 
							
								using System.Web;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								namespace BLL
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    public static class FileStructService
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        /// <summary>
							 | 
						|||
| 
								 | 
							
								        /// 获取附件数据流类
							 | 
						|||
| 
								 | 
							
								        /// </summary>
							 | 
						|||
| 
								 | 
							
								        /// <param name="attachUrl">附件路径</param>
							 | 
						|||
| 
								 | 
							
								        /// <returns></returns>
							 | 
						|||
| 
								 | 
							
								        public static List<byte[]> GetFileStructByAttachUrl(string attachUrl)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            List<byte[]> fileContext = new List<byte[]>();
							 | 
						|||
| 
								 | 
							
								            if (!String.IsNullOrEmpty(attachUrl))
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                string filePath = string.Empty;
							 | 
						|||
| 
								 | 
							
								                string physicalpath = Funs.RootPath;
							 | 
						|||
| 
								 | 
							
								                    //HttpContext.Current.Request.PhysicalApplicationPath;                
							 | 
						|||
| 
								 | 
							
								                filePath = physicalpath + attachUrl;               
							 | 
						|||
| 
								 | 
							
								                if (File.Exists(filePath))
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    FileInfo fileInfo = new FileInfo(filePath);
							 | 
						|||
| 
								 | 
							
								                    Stream stream = fileInfo.OpenRead();
							 | 
						|||
| 
								 | 
							
								                    //读取指定大小的文件流内容到uploadFile.Context以便上传
							 | 
						|||
| 
								 | 
							
								                    int b;
							 | 
						|||
| 
								 | 
							
								                    while (stream.Position > -1 && stream.Position < stream.Length)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        if (stream.Length - stream.Position >= 20000000)
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            b = 20000000;
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                        else
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            b = (int)(stream.Length - stream.Position);
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                        byte[] filebyte = new byte[b];
							 | 
						|||
| 
								 | 
							
								                        stream.Read(filebyte, 0, b);
							 | 
						|||
| 
								 | 
							
								                        fileContext.Add(filebyte);
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    stream.Close();
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            return fileContext;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        /// <summary>
							 | 
						|||
| 
								 | 
							
								        /// 获取附件数据流类 多附件的情况
							 | 
						|||
| 
								 | 
							
								        /// </summary>
							 | 
						|||
| 
								 | 
							
								        /// <param name="attachUrl">附件路径</param>
							 | 
						|||
| 
								 | 
							
								        /// <returns></returns>
							 | 
						|||
| 
								 | 
							
								        public static List<byte[]> GetMoreFileStructByAttachUrl(string attachUrl)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            List<byte[]> fileContext = new List<byte[]>();
							 | 
						|||
| 
								 | 
							
								            if (!String.IsNullOrEmpty(attachUrl))
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                string[] strs = attachUrl.Trim().Split(',');
							 | 
						|||
| 
								 | 
							
								                foreach (var item in strs)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    string filePath = string.Empty;
							 | 
						|||
| 
								 | 
							
								                    string physicalpath = Funs.RootPath;
							 | 
						|||
| 
								 | 
							
								                    //HttpContext.Current.Request.PhysicalApplicationPath;    
							 | 
						|||
| 
								 | 
							
								                    filePath = physicalpath + item;
							 | 
						|||
| 
								 | 
							
								                    if (File.Exists(filePath))
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        FileInfo fileInfo = new FileInfo(filePath);
							 | 
						|||
| 
								 | 
							
								                        if (fileInfo != null)
							 | 
						|||
| 
								 | 
							
								                        {
							 | 
						|||
| 
								 | 
							
								                            Stream stream = fileInfo.OpenRead();
							 | 
						|||
| 
								 | 
							
								                            if (stream != null)
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                //读取指定大小的文件流内容到uploadFile.Context以便上传
							 | 
						|||
| 
								 | 
							
								                                int b;
							 | 
						|||
| 
								 | 
							
								                                while (stream.Position > -1 && stream.Position < stream.Length)
							 | 
						|||
| 
								 | 
							
								                                {
							 | 
						|||
| 
								 | 
							
								                                    if (stream.Length - stream.Position >= 20000000)
							 | 
						|||
| 
								 | 
							
								                                    {
							 | 
						|||
| 
								 | 
							
								                                        b = 20000000;
							 | 
						|||
| 
								 | 
							
								                                    }
							 | 
						|||
| 
								 | 
							
								                                    else
							 | 
						|||
| 
								 | 
							
								                                    {
							 | 
						|||
| 
								 | 
							
								                                        b = (int)(stream.Length - stream.Position);
							 | 
						|||
| 
								 | 
							
								                                    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                                    byte[] filebyte = new byte[b];
							 | 
						|||
| 
								 | 
							
								                                    stream.Read(filebyte, 0, b);
							 | 
						|||
| 
								 | 
							
								                                    fileContext.Add(filebyte);
							 | 
						|||
| 
								 | 
							
								                                }
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                            stream.Close();
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            return fileContext;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 |