此问题与加宽Fine-Uploader(https://github.com/Widen/fine-uploader)有关

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

例如。您选择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 ++,但没有任何工作像我需要的..

最佳答案

您的应用程序听起来有些脆弱,解决该问题可能符合您的最大利益。

您只需要维护唯一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);
   });

09-25 17:39
查看更多