2013-05-20 1 views
3

데이터베이스에 여러 파일을 저장해야합니다. 이를 위해서 나는 blueimp에 의해 작성된 jQuery Multiple File Uplaod 컨트롤을 사용하고 있습니다. 서버 언어의 경우 asp.net을 사용합니다. 그것은 모든 특정 파일을 받아들이고 그것을 DB에 저장하는 핸들러 - ashx를 사용합니다. 내 DB에서 현재 업로드 된 파일의 문서 ID를 반환하고 DB에 저장하는 저장 프로 시저가 있습니다. 이것은이 ID를 얻는 것은 3 단계 절차되었음을 표시 할로부터의 코드이다여러 파일 업로드 blueimp "sequentialUploads = true"가 작동하지 않습니다.

SELECT TOP 1 @docIdOut가 = tblFile.docId - @ 제작자가 = 제작자가 @ 생성 =로부터 생성 [ tblFile] WHERE @friendlyname LIKE 의 FriendlyName AND @categoryId 카테고리 ID = AND @objectId = OBJECTID @objectTypeId AND ORDER = objectTypeId tblFile.version DESC

IF @docIdOut = 0  BEGIN --get the next docId   SELECT TOP 1 

@docIdOut DOCID = + 1 FROM [tblFile] ORDER BY BY docId DESC END

01 이 저장 프로 시저에 하나 이상의 전화 인해 데이터의 일관성에 문제가 될 것입니다 후 실행됩니다,하지만 난 다음 트랜잭션을 추가하면 일부 파일의 업로드가 취소됩니다 경우 23,516,
IF @docIdOut = 0  BEGIN --set to 1   SET @docIdOut = 1  END 

.

https://dl.dropboxusercontent.com/u/13878369/2013-05-20_1731.png

실행이 트랜잭션에 의해 차단 될 때 동일한 매개 변수로 다시 저장 프로 시저를 호출 할 수있는 방법이 있습니까?

또 다른 옵션은 "sequentialUploads = true"옵션과 동 기적으로 blueimp 플러그인을 사용하는 것입니다. 이 옵션은 firefox를 제외한 모든 브라우저에서 작동하며 Safari에서도 작동하지 않습니다.

어떤 제안이 도움이 될 것입니다. 한 번에 하나의 파일 만 선택하는 옵션을 시도했지만 최선의 방법은 아니지만 DB 문제 (중지 된 프로 시저)를 중지하고 파일을 올바르게 저장합니다.

감사합니다, 최고 감사합니다, Lyuubomir

답변

0

설정 singleFileUploads : 사실, sequentialUploads 다음 main.js. 거짓

singleFileUploads : true는 선택 항목의 각 파일이 XHR 유형 업로드에 대한 개별 요청을 사용하여 업로드됨을 의미합니다. 그런 다음 개별 파일에 대한 정보를 얻고 방금 얻은 정보로 저장 절차를 호출 할 수 있습니다.