fine-uploader唯一但在提交和取消时在文件名中升序ID

时间:2013-04-25 19:11:37

标签: javascript jquery fine-uploader

此问题与Widen Fine-Uploader(https://github.com/Widen/fine-uploader

有关

我收到了这个分段上传表单。没有autoupload。我想上传几张图片,并以每个图片的唯一名称保护它们。

例如。你选了4张图片。通过精细上传上传。我已经有了一个画廊ID。所有图像都应使用gallery-id和唯一的升序号保存在文件名下。像这样:

1234-1.jpg 1234-2.jpg 1234-3.jpg 1234-4.jpg

听起来很简单,但有两个问题:

  • image-id需要升序而不跳过任何一个。如果您在上传之前取消(删除)文件,则可能会发生这种情况。所以在选择所有文件后需要设置image-id,或者在删除文件时需要填充空ID。

  • 图像的顺序必须严格遵守您在输入时选择文件的顺序。您选择的第一个图像变为1234-1.jpg,第二个图像为1234-2.jpg ...因此我无法在重新加载后在imageHandler脚本中设置ID。它会抓取第一个完整的图像,它不能是第一个按顺序排列的图像,因为我在上传时使用了几个同时连接。

我尝试过类似的东西:

.on('submitted', function(event, id, name) {
    var picId = id+1;

    $(this).fineUploader('setParams', {
        'currentGid': 1234,
        'picId':picId
    });
})

params: {
        fileNum: function() {
        return $(this).attr('id');
        }
}

或使用fileCount ++,但没有任何工作像我需要..

1 个答案:

答案 0 :(得分:2)

您的应用程序听起来有点脆弱,解决这个问题可能符合您的最佳利益。

您只需要维护一个唯一ID的地图以及Fine Uploader为每个文件维护的ID。在“提交”处理程序中,将键/值对添加到地图中。在“取消”处理程序中,适当调整地图中的项目。在“上传”处理程序中,调用“setParams”API方法。您的参数将通过图库ID,您在地图中为该特定文件跟踪的唯一ID,并确保将文件的ID作为最后一个参数传递给“setParams”调用。这使Fine Uploader知道此参数仅适用于该特定文件。

有关详细信息,请参阅callbacks documentation

这是一个代码示例:

var fileIds = [];

$('#myFineuploaderContainer').fineUploader({
   //set your options here
})
   .on('submitted', function(event, id, name) {
      fileIds.push(id);
   })
   .on('cancel', function(event, id, name) {
      var fileIdPosition = $.inArray(id, fileIds);      
      fileIds.splice(fileIdPosition, 1);
   })
   .on('upload', function(event, id, name) {
      var params = {
         currentGid: 1234,
         picId: $.inArray(id, fileIds)
      };

      $(this).fineUploader('setParams', params, id);
   });