在我的应用程序中,我有一个textarea输入,用户可以在其中输入注释。 当他们单击“保存”时,会对Web Api进行AJAX调用,将该注释保存到数据库中。
我希望用户能够在保存笔记之前将多个文件附加到此笔记(Gmail样式)。如果在保存笔记之前上传可以在附加后立即开始,那将是很好的。
最佳策略是什么?
P.S。我不能使用jQuery fineuploader插件或类似的东西,因为我需要在服务器上为文件提供唯一的名称,然后再将它们上传到Azure。
我正在尝试做什么,或者我是否必须将整个'Note'作为普通表单帖子而不是API调用?
谢谢!
答案 0 :(得分:2)
此方法基于文件,但如果您愿意,可以将相同的逻辑应用于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
当用户执行POST并且我已确认所有验证都已通过时,我只需使用新生成的注释ID将文件复制到已完成的文件夹:
C:\NodeUploads\Note-100001\file1.txt
然后删除C:\TemporaryUploads\UNIQUE-USER-GUID
文件夹
清理
现在。对于那些真正开始并保存笔记的用户来说,这一切都很好,但那些上传文件并关闭浏览器的用户呢?在这个阶段有两种选择:
答案 1 :(得分:2)
在RGraham的回答基础上,您可以采取另一种方法:
note-attachments
。file1.txt
,则会将其作为note-attachments/{note id}/file1.txt
保存到blob存储空间中。对于上传文件,我建议直接从浏览器使用AJAX
,CORS
和Shared Access Signature
进行blob存储。这样您就可以避免数据通过服务器。您可能会发现这些博客文章很有用: