gpt4 book ai didi

file-upload - ASP.net-上传与数据库记录关联的文件?

转载 作者:行者123 更新时间:2023-12-03 06:23:35 25 4
gpt4 key购买 nike

我知道在ASP.net中有大量的多部分表单数据上传示例。但是,所有这些文件都只是将文件上传到服务器,然后使用System.IO将其写入服务器磁盘空间。另外,客户端实现似乎仅在上传时处理文件,因此我不能真正使用现有的上传插件。

如果我有一个现有记录,并且想要上传图像并将其与该记录相关联该怎么办?我是否需要在上载(Api)函数中编写数据库访问代码,如果是这样,如何在上载请求中传递该记录的PK?我是否应该在该请求中上传文件,获取服务器生成的文件名,然后进行单独的API调用以将文件与记录相关联?

在此期间,有人知道YouTube上传的工作原理吗?从用户的 Angular 来看,似乎我们可以上传视频,并且在上传时,我们可以设置标题,说明,标签等,甚至保存记录。是否在API请求上传之前立即创建了视频记录,这就是为什么我们甚至可以在上传完成之前保存信息?

同样,我不问如何上传文件。我在问如何将上传的文件与现有记录以及其中涉及的API调用相关联。另外,当他们还输入有关他们要上传的内容的信息时,我想问什么API调用才能使用户体验成为WHEN。

最佳答案

我假设您正在使用api调用来获取用于显示文件列表或单个文件的初始数据。您必须执行此操作才能将id传递回PUT方法以更新文件。

这是GET方法的示例:

 [HttpGet]
public IEnumerable<FileMetaData> Get()
{
var allFiles = MyEntities.Files.Select(f => new FileMetaData()
{
Name = f.Name,
FileName = f.FileName,
Description = f.Description,
FileId = f.Id,
ContentType = f.ContentType,
Tags = f.Tags,
NumberOfKB = f.NumberOfKB
});

return allFiles;
}

这是POST方法的示例,您可以改用它作为PUT(更新):
[HttpPost]
[ValidateMimeMultipartContentFilter]
public async Task<IHttpActionResult> PutFile()
{
try
{
var streamProvider =
await Request.Content.ReadAsMultipartAsync(new InMemoryMultipartFormDataStreamProvider());

//We only allow one file
var thisFile = files[0];

//For a PUT version, you would grab the file from the database based on the id included in the form data, instead of creating a new file
var file = new File()
{
FileName = thisFile.FileName,
ContentType = thisFile.ContentType,
NumberOfKB = thisFile.ContentLength
};

//This is the file metadata that your client would pass in as formData on the PUT / POST.
var formData = streamProvider.FormData;
if (formData != null && formData.Count > 0)
{
file.Id = formData["id"];
file.Description = formData["description"];
file.Name = formData["name"] ?? string.Empty;
file.Tags = formData["tags"];
}

file.Resource = thisFile.Data;

//For your PUT, change this to an update.
MyEntities.Entry(file).State = EntityState.Detached;
MyEntities.Files.Add(file);
await MyEntities.SaveChangesAsync();

//return the ID
return Ok(file.Id.ToString());

}

我从本文获得了InMemoryMultipartFormDataStreamProvider:
https://conficient.wordpress.com/2013/07/22/async-file-uploads-with-mvc-webapi-and-bootstrap/

并对其进行了调整以满足我对返回的表单数据的需求。

关于file-upload - ASP.net-上传与数据库记录关联的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30354503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com