所以要么没有人试图这样做,要么就是我没有找到任何东西。您上传文件的旧方法是:
import { provide } from '@angular/core';
describe('Dashboard Component', () => {
beforeEachProviders(() => {
return [
provide(ProjectService, {
useClass: MockProjectService
})
];
});
我知道.Net Core使用IFormFile但我找到的用于保存的所有资源都谈到将其保存到Web服务器上的wwwroot文件夹。我成功将文件传递给我的控制器,但无法弄清楚如何将其转换为byte []以保存到DB FileStream表。
这是我目前的代码:
public class FileStorage
{
public string FileName { get; set; }
public byte[] FileStore { get; set; }
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Create(HttpPostedFileBase file)
{
FileStorage fileAttachment = new FileStorage();
using (Stream inputStream = file.InputStream)
{
MemoryStream memoryStream = inputStream as MemoryStream;
//Check to see if stream returned is already a MemoryStream
if(memoryStream == null)
{
memoryStream = new MemoryStream();
inputStream.CopyTo(memoryStream);
}
fileAttachment.FileStore = memoryStream.ToArray();
fileAttachment.FileName = file.FileName;
}
if (ModelState.IsValid)
{
db.FileAttachment.Add(fileAttachment);
await db.SaveChangesAsync();
return RedirectToAction("Index");
}
return RedirectToAction("Index");
}
如何将其转换为使用DB FileStream
答案 0 :(得分:1)
由于似乎有很多关于如何写入SQL Server文件流的文章,我将在这里避免提及。
IFormFile
有一个CopyToAsync
方法,您可以使用它。让我们说你掌握了SQL Server的文件流,所有人都需要做的就是
await formFile.CopyToAsync(targetSqlFileStream);