0

此问题与 Widen 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 需要上升而不跳过任何一个。如果您在上传之前取消(删除)文件,则可能会发生这种情况。因此需要在选择所有文件之后设置图像 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++ 但没有什么像我需要的那样工作..

4

1 回答 1

2

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

You'll simply need to maintain a map of your unique ids along with the ids maintained for each file by Fine Uploader. In your "submitted" handler, add a key/value pair to the map. In a "cancel" handler, adjust the items in the map appropriately. In an "upload" handler, call the "setParams" API method. Your parameters will by the gallery ID, the unique ID you've been tracking in your map for that specific file, and be sure to pass the id of the file as your last parameter to the "setParams" call. This lets Fine Uploader know that this parameter is only for that specific file.

Please see the callbacks documentation for more info.

Here's a code example:

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);
   });
于 2013-04-26T13:07:03.217 回答