//文件转base64文件流
public AttachmentModel ReadDocument(T_BAFJ modelItem)
{
AttachmentModel attachment = new AttachmentModel();
if (modelItem!=null) {
string fileFullPath = Path.Combine(UploadRoot, modelItem.F_WJLJ);//保存文件的全路径
using (FileStream filestream = new FileStream($"{fileFullPath}", FileMode.OpenOrCreate, FileAccess.Read))
{
byte[] bt = new byte[filestream.Length];
//用来限定每次的读取字节数,也可以byte[] b=new byte[Fsread.Length];
while (true)
{
int r = filestream.Read(bt, 0, bt.Length);
if (r == 0)
break;
}
attachment.Wjlx = modelItem.F_WJLX;
attachment.Wjmc = modelItem.F_WJMC;
attachment.AttachmentContent = Convert.ToBase64String(bt);
//base64StringToPdf(attachment.AttachmentContent, $@"D:\gitProject\规章库\regulationlibrary\guizhangku\Bdyh.bjrd.web\T_BBXM\{modelItem.F_WJMC}");
}
}
return attachment;
}
//文件流转文件
public void base64StringToPdf(String base64Content, String filePath)
{
try
{
//注意:文件直接转base64前面会带有“data:application/pdf;base64,”前缀,需要去掉。
base64Content = base64Content.Replace("data:application/pdf;filename=generated.pdf;base64,", string.Empty);
string base64ContentData = base64Content.Trim().Replace("%", "").Replace(",", "").Replace(" ", "+");
if (base64ContentData.Length % 4 > 0)
{
base64ContentData = base64ContentData.PadRight(base64ContentData.Length + 4 - base64ContentData.Length % 4, '=');
}
byte[] bytes = Convert.FromBase64String(base64ContentData);
string location = filePath;
System.IO.FileStream stream = new FileStream(location, FileMode.CreateNew);
System.IO.BinaryWriter writer = new BinaryWriter(stream);
writer.Write(bytes, 0, bytes.Length);
writer.Close();
}
catch (Exception ex)
{
//LogHelper.WriteLog(GetType(), "base64StringToPdf异常错误为:" + ex.Message);
}
}