Asp.net mvc 将文件附加/上载到尚未保存的便笺中-这方面的最佳策略是什么?
在我的应用程序中,我有一个textarea输入,用户可以在其中键入注释。 当他们单击Save时,会有一个对WebAPI的AJAX调用,将注释保存到数据库中 我希望用户能够在保存便笺之前将多个文件附加到此便笺(Gmail样式)。这将是很好的,如果上传可以开始尽快附加,然后再保存说明 这方面的最佳策略是什么 另外,我不能使用jQuery fineuploader插件或类似的东西,因为在上传到Azure之前,我需要在服务器上为文件指定唯一的名称 我试图做的是可能的,还是我必须让整个“注释”成为一个普通的表单post而不是一个API调用Asp.net mvc 将文件附加/上载到尚未保存的便笺中-这方面的最佳策略是什么?,asp.net-mvc,asp.net-mvc-4,azure,file-upload,asp.net-web-api,Asp.net Mvc,Asp.net Mvc 4,Azure,File Upload,Asp.net Web Api,在我的应用程序中,我有一个textarea输入,用户可以在其中键入注释。 当他们单击Save时,会有一个对WebAPI的AJAX调用,将注释保存到数据库中 我希望用户能够在保存便笺之前将多个文件附加到此便笺(Gmail样式)。这将是很好的,如果上传可以开始尽快附加,然后再保存说明 这方面的最佳策略是什么 另外,我不能使用jQuery fineuploader插件或类似的东西,因为在上传到Azure之前,我需要在服务器上为文件指定唯一的名称 我试图做的是可能的,还是我必须让整个“注释”成为一个普通
谢谢 这种方法是基于文件的,但是如果您愿意,可以将相同的逻辑应用于Azure Blob存储容器 我通常做的是在用户获得AddNote页面时为其提供唯一的GUID。我创建了一个名为:
C:\TemporaryUploads\UNIQUE-USER-GUID\
然后,用户在此阶段上载的任何文件都会分配到此文件夹:
C:\TemporaryUploads\UNIQUE-USER-GUID\file1.txt
C:\TemporaryUploads\UNIQUE-USER-GUID\file2.txt
C:\TemporaryUploads\UNIQUE-USER-GUID\file3.txt
当用户发帖子并且我确认所有验证都已通过时,我只需将文件复制到已完成的文件夹中,并使用新生成的便笺ID:
C:\NodeUploads\Note-100001\file1.txt
然后删除C:\TemporaryUploads\UNIQUE-USER-GUID
文件夹
清理
现在。这对那些真正开始并保存便条的用户来说是很好的,但是那些上传文件并关闭浏览器的用户呢?现阶段有两种选择:
这种方法是基于文件的,但如果您愿意,可以将相同的逻辑应用于Azure Blob存储容器 我通常做的是在用户获得AddNote页面时为其提供唯一的GUID。我创建了一个名为:
C:\TemporaryUploads\UNIQUE-USER-GUID\
然后,用户在此阶段上载的任何文件都会分配到此文件夹:
C:\TemporaryUploads\UNIQUE-USER-GUID\file1.txt
C:\TemporaryUploads\UNIQUE-USER-GUID\file2.txt
C:\TemporaryUploads\UNIQUE-USER-GUID\file3.txt
当用户发帖子并且我确认所有验证都已通过时,我只需将文件复制到已完成的文件夹中,并使用新生成的便笺ID:
C:\NodeUploads\Note-100001\file1.txt
然后删除C:\TemporaryUploads\UNIQUE-USER-GUID
文件夹
清理
现在。这对那些真正开始并保存便条的用户来说是很好的,但是那些上传文件并关闭浏览器的用户呢?现阶段有两种选择:
基于RGraham的回答,您可以采取另一种方法:
- 创建用于存储便笺附件的blob容器。我们称之为
注意附件
- 当用户进入创建便笺的屏幕时,为便笺指定GUID
- 当用户上传文件时,您只需在文件名前加上此注释id。因此,如果用户上传文件,比如
,它将作为file1.txt
保存到blob存储中note attachments/{note id}/file1.txt
- 根据您的要求,保存便笺后,您可以将此blob移动到另一个blob容器中或仅保留在此处。由于blob的名称中有noteid,因此搜索注释的附件很容易
AJAX
、CORS
和共享访问签名
直接从浏览器上传到blob存储。这样可以避免数据通过服务器传输。您可能会发现这些博客文章很有用:
- 创建用于存储便笺附件的blob容器。我们称之为
注意附件
- 当用户进入创建便笺的屏幕时,为便笺指定GUID
- 当用户上传文件时,您只需在文件名前加上此注释id。因此,如果用户上传文件,比如
,它将作为file1.txt
保存到blob存储中note attachments/{note id}/file1.txt
- 根据您的要求,保存便笺后,您可以将此blob移动到另一个blob容器中或仅保留在此处。由于blob的名称中有noteid,因此搜索注释的附件很容易
AJAX
、CORS
和共享访问签名
直接从浏览器上传到blob存储。这样可以避免数据通过服务器传输。您可能会发现这些博客文章很有用: