將文件轉換成文件流進行輸出


起因是因為微信小程序自帶的下載功能對下載文件的域名有限制,必須進行域名配置和校驗之后才能下載文件,但是公司的數據是,一個客戶一個域名,不可能去配置很多域名,所以就想到將文件轉換成文件流的方式進行文件的預覽

步驟是:

1、獲取將遠程文件(url)下載到本地

string fileName = url.Substring(url.LastIndexOf('/') + 1);
string folder = "/FileToStream/" + DateTime.Now.Year + "/" + DateTime.Now.Month + "/";//https://d4.cloudcubic.net
if (!Directory.Exists(context.Server.MapPath(folder)))
{
  Directory.CreateDirectory(context.Server.MapPath(folder));
}
string avatarFileName = folder + fileName;

WebClient client = new WebClient();
try
{
  client.DownloadFile(url, context.Server.MapPath(avatarFileName));
}
catch
{
  //錯誤提示
}
client.Dispose();

2、將本地文件轉換成文件流,並輸出

string filePath = context.Server.MapPath(avatarFileName);//路徑
try
{
  FileInfo fileInfo = new FileInfo(filePath);
  context.Response.Clear();
  context.Response.ClearContent();
  context.Response.ClearHeaders();
  context.Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName);
  context.Response.AddHeader("Content-Length", fileInfo.Length.ToString());
  context.Response.AddHeader("Content-Transfer-Encoding", "binary");
  context.Response.ContentType = "application/octet-stream";
  context.Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
  context.Response.WriteFile(fileInfo.FullName);
  context.Response.Flush();
  File.Delete(context.Server.MapPath(avatarFileName));
}
catch
{
  context.Response.Write("文件轉換成文件流失敗");
  return;
}

到此,文件已經轉換成流了,小程序,通過請求這個接口,就看可以通過文件流的方式預覽文件

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM