【发布时间】:2013-05-15 12:51:29
【问题描述】:
我必须在数据库中存储多个文件。为了做到这一点,我使用了 blueimp 编写的 jQuery Multiple File Uplaod 控件。对于服务器语言,我使用 asp.net。它使用一个处理程序——ashx,它接受每个特定文件并将其存储在数据库中。 在我的数据库中,我有一个存储过程,它返回当前上传文件的文档 ID,然后将其存储到数据库中。 这是其中的一个代码片段,它表明获取此 ID 是一个 3 步过程:
SELECT TOP 1 @docIdOut = tblFile.docId -- ,@creator=creator,@created=created FROM [tblFile] WHERE 友好名称 LIKE @friendlyname AND @categoryId = categoryId AND @objectId = objectId AND @objectTypeId = objectTypeId ORDER BY tblFile.version DESC
IF @docIdOut = 0 BEGIN --get the next docId SELECT TOP 1@docIdOut = docId + 1 FROM [tblFile] ORDER BY docId DESC END
IF @docIdOut = 0 BEGIN --set to 1 SET @docIdOut = 1 END
如果对该存储过程执行了多次调用,则会由于数据不一致而出现问题,但如果我添加事务,则某些文件的上传将被取消。
https://dl.dropboxusercontent.com/u/13878369/2013-05-20_1731.png
当执行被事务阻塞时,有没有办法用相同的参数再次调用存储过程?
另一个选项是使用 blueimp 插件与选项“sequentialUploads = true”同步使用 此选项适用于除 firefox 之外的所有浏览器,而且我了解到它不适用于 Safari。
任何建议都会有所帮助。我尝试启用一次只选择一个文件的选项,这不是最好的,但会停止数据库问题(存储过程)并正确保存文件。
谢谢, 最好的祝福, 柳博米尔
【问题讨论】:
标签: file asynchronous upload blueimp