起因是因為微信小程序自帶的下載功能對下載文件的域名有限制,必須進行域名配置和校驗之后才能下載文件,但是公司的數據是,一個客戶一個域名,不可能去配置很多域名,所以就想到將文件轉換成文件流的方式進行文件的預覽
步驟是:
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; }
到此,文件已經轉換成流了,小程序,通過請求這個接口,就看可以通過文件流的方式預覽文件