using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.IO;
using System.Web;
using System.Configuration;
namespace BLL
{
public static class FileStructService
{
///
/// 获取附件数据流类
///
/// 附件路径
///
public static List GetFileStructByAttachUrl(string attachUrl)
{
List fileContext = new List();
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;
}
///
/// 获取附件数据流类 多附件的情况
///
/// 附件路径
///
public static List GetMoreFileStructByAttachUrl(string attachUrl)
{
List fileContext = new List();
if (!String.IsNullOrEmpty(attachUrl))
{
string[] strs = attachUrl.Trim().Split(',');
foreach (var item in strs)
{
string filePath = string.Empty;
string physicalpath = ConfigurationManager.AppSettings["localRoot"];
//HttpContext.Current.Request.PhysicalApplicationPath;
filePath = physicalpath + item;
if (File.Exists(filePath))
{
fileContext.Add(fileConvertByte(item));
}
}
}
return fileContext;
}
#region 二进制数据转换为附件
///
/// 二进制数据转换为附件
///
/// 二进制数据
/// 附件.后缀
/// 保存路径
/// 保存的相对路径
public static string ByteConvertFile(byte[] data, string fileName, string savePath)
{
string physicalpath = (ConfigurationManager.AppSettings["localRoot"] + "\\" + savePath).Replace("\\\\", "\\");
if (!System.IO.Directory.Exists(savePath))
{
Directory.CreateDirectory(savePath);
}
savePath += fileName;
FileStream fs;
if (System.IO.File.Exists(savePath))
{
fs = new FileStream(savePath, FileMode.Truncate);
}
else
{
fs = new FileStream(savePath, FileMode.CreateNew);
}
BinaryWriter br = new BinaryWriter(fs);
br.Write(data, 0, data.Length);
br.Close();
fs.Close();
return savePath;
}
#endregion
#region 附件转换二进制数据(用于保存数据库)
///
/// 附件转换二进制数据(用于保存数据库)
///
/// 附件路径
/// 二进制
public static byte[] fileConvertByte(string filePath)
{
string physicalpath = (ConfigurationManager.AppSettings["localRoot"] + "\\" + filePath).Replace("\\\\", "\\");
byte[] bytContent = null;
System.IO.FileStream fs = null;
System.IO.BinaryReader br = null;
try
{
fs = new FileStream(physicalpath, System.IO.FileMode.Open);
}
catch
{
}
br = new BinaryReader((Stream)fs);
bytContent = br.ReadBytes((Int32)fs.Length);
fs.Dispose();
return bytContent;
}
#endregion
}
}