/* 物理ファイル⇒Base64データ */ protected void PhysicalFiletoBase64(VueMSFramework.ViewModels.Common.SpecialParts.File file) { //データがない場合は抜ける if (file.Url == null) { return; } var currentPath = Directory.GetCurrentDirectory(); var wwwroot = "/wwwroot"; using (var fin = new StreamReader(wwwroot + file.Url)) { string body = fin.ReadToEnd(); byte[] data = System.Text.Encoding.ASCII.GetBytes(body); var cn = Convert.ToBase64String(data); file.Base64StringContents = cn; } }
public ActionResult <VueMSFramework.ViewModels.Common.SpecialParts.File> Upload([FromBody] VueMSFramework.ViewModels.Common.SpecialParts.File file) { Guid urlFileName = Guid.NewGuid(); file.FileName = Path.GetFileName(file.FileName); //うまく取り除けないので / を後ろから取得する var pos = file.FileName.LastIndexOf(@"\"); if (pos > 0) { file.FileName = file.FileName.Substring(pos + 1); } string ext = Path.GetExtension(file.FileName); file.UrlFileName = urlFileName.ToString() + ext; var f = Base64toPhysicalFile(file); return(Ok(f)); }
/* Base64データ⇒物理ファイル化 */ protected VueMSFramework.ViewModels.Common.SpecialParts.File Base64toPhysicalFile(VueMSFramework.ViewModels.Common.SpecialParts.File file) { //データがない場合は抜ける if (file.Base64StringContents == null) { return(file); } var currentPath = Directory.GetCurrentDirectory(); var wwwroot = "/wwwroot"; var filedeploypath = "/files/"; var strarr = file.Base64StringContents.Split(','); byte[] bs; if (strarr.Length == 2) { //バイト型配列に戻す bs = Convert.FromBase64String(strarr[1]); file.FileType = strarr[0]; //ファイルサイズ file.FileSize = bs.Length; } else { //バイト型配列に戻す bs = Convert.FromBase64String(strarr[0]); //ファイルサイズ file.FileSize = bs.Length; } //ファイルに保存する //保存するファイル名 string url = filedeploypath + file.UrlFileName; //ファイルに書き込む FileStream outFile = new FileStream(currentPath + wwwroot + url, FileMode.Create, FileAccess.Write); outFile.Write(bs, 0, bs.Length); outFile.Close(); file.Url = url; file.Base64StringContents = null; return(file); }