/* - - - - - - - - - - - - - - - - - - - - - - - -
* 将文件转换为Bytes
* - - - - - - - - - - - - - - - - - - - - - - - */
/// <summary>
/// 将文件转换为Bytes
/// </summary>
/// <param name="fileLocation">文件位置</param>
/// <returns></returns>
public byte[] FileBytes(string fileLocation)
{
try
{
FileStream fs = new FileStream(fileLocation, FileMode.OpenOrCreate, FileAccess.Read);
byte[] fileDatas = new byte[fs.Length];
fs.Read(fileDatas, 0, System.Convert.ToInt32(fs.Length));
fs.Close();
return fileDatas;
}
catch (Exception)
{
return new byte[] { };
}
}
/* - - - - - - - - - - - - - - - - - - - - - - - -
* C# Stream 和 byte[] 之间的转换
* - - - - - - - - - - - - - - - - - - - - - - - */
/// <summary>
/// C# Stream 和 byte[] 之间的转换
/// </summary>
/// <param name="stream"></param>
/// <returns></returns>
public byte[] StreamToBytes(Stream stream)
{
byte[] bytes = new byte[stream.Length];
stream.Read(bytes, 0, bytes.Length);
// 设置当前流的位置为流的开始
stream.Seek(0, SeekOrigin.Begin);
return bytes;
}
/// <summary>
/// 将 byte[] 转成 Stream
/// </summary>
/// <param name="bytes"></param>
/// <returns></returns>
public Stream BytesToStream(byte[] bytes)
{
Stream stream = new MemoryStream(bytes);
return stream;
}
/* - - - - - - - - - - - - - - - - - - - - - - - -
* Stream 和 文件之间的转换
* - - - - - - - - - - - - - - - - - - - - - - - */
/// <summary>
/// 将 Stream 写入文件
/// </summary>
public void StreamToFile(Stream stream,string fileName)
{
// 把 Stream 转换成 byte[]
byte[] bytes = new byte[stream.Length];
stream.Read(bytes, 0, bytes.Length);
// 设置当前流的位置为流的开始
stream.Seek(0, SeekOrigin.Begin);
// 把 byte[] 写入文件
FileStream fs = new FileStream(fileName, FileMode.Create);
BinaryWriter bw = new BinaryWriter(fs);
bw.Write(bytes);
bw.Close();
fs.Close();
}
/// <summary>
/// 从文件读取 Stream
/// </summary>
public Stream FileToStream(string fileName)
{
// 打开文件
FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read);
// 读取文件的 byte[]
byte[] bytes = new byte[fileStream.Length];
fileStream.Read(bytes, 0, bytes.Length);
fileStream.Close();
// 把 byte[] 转换成 Stream
Stream stream = new MemoryStream(bytes);
return stream;
}
/* - - - - - - - - - - - - - - - - - - - - - - - -
* 字节流转Word
* - - - - - - - - - - - - - - - - - - - - - - - */
/// <summary>
/// 字节流转Word
/// </summary>
/// <param name="bytes">文档字节流</param>
/// <returns></returns>
public static Document BytesToDoc(byte[] bytes)
{
using (MemoryStream inStream = new MemoryStream(bytes))
{
Document doc = new Document(inStream);
return doc;
}
}
/* - - - - - - - - - - - - - - - - - - - - - - - -
* word转图片
* - - - - - - - - - - - - - - - - - - - - - - - */
/// <summary>
/// word转图片
/// </summary>
/// <param name="doc"></param>
/// <returns>图片路径集合</returns>
public static List<string> DocToImg(Document doc)
{
ImageSaveOptions iso = new ImageSaveOptions(SaveFormat.Png) { Resolution = 256, JpegQuality = 100 };
var paths = new List<string>();
var basePath = "要保存的图片的虚拟路径";
for (int i = 0; i < doc.PageCount; i++)
{
iso.PageIndex = i;
var url = $"{basePath}/{DateTime.Now.Ticks}.png";
var distPath = FilePath.MapPath(url);
if (!Directory.Exists(Path.GetDirectoryName(distPath)))
{
Directory.CreateDirectory(Path.GetDirectoryName(distPath));
}
doc.Save(distPath, iso);
paths.Add(url);
}
return paths;
}
/* - - - - - - - - - - - - - - - - - - - - - - - -
* 文件转Base64码
* - - - - - - - - - - - - - - - - - - - - - - - */
/// <summary>
/// 文件转Base64码
/// </summary>
/// <param name="fileLocation">文件位置</param>
/// <returns></returns>
public string ImgToBase64String(string fileLocation)
{
MemoryStream ms = new MemoryStream();
try
{
Bitmap bmp = new Bitmap(fileLocation);
bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] arr = new byte[ms.Length];
ms.Position = 0;
ms.Read(arr, 0, (int)ms.Length);
return Convert.ToBase64String(arr);
}
catch (Exception ex)
{
Log.WriteLog4Ex("图片转base64错误:", ex);
return "";
}
finally
{
ms.Close();
}
}
/* - - - - - - - - - - - - - - - - - - - - - - - -
* base64文件字符串转byte[]字节流
* - - - - - - - - - - - - - - - - - - - - - - - */
//base64文件字符串转byte[]字节流
byte[] bt = Convert.FromBase64String(strBase64);
03-16
1万+
08-24
1134