在精细上传器中动态设置端点

时间:2013-10-12 13:00:47

标签: javascript fine-uploader

我想动态设置fine-uploader的请求端点。 例如:

$('#jquery-wrapped-fine-uploader').fineUploader({
      request: {
        endpoint: submitUrl
      },
      multiple: false,
      button: $("#uploader-button"),
      // etc...
  });

必须已在页面中设置submitUrl且无法更改。 我想做一些更有活力的事情,比如:

 request: {
        endpoint: function() { ($('#submitUrlField').val() }
      }

但是上面发送请求 功能%20()%20%7B%$ 20(%27#submitUrlField%27).VAL()%20}

感谢任何知道如何做的人!

4 个答案:

答案 0 :(得分:2)

您可以使用多个点。 例如,对奇数/偶数上传使用几个端点:

        callbacks: {
            onUpload:  function(id, name) {
                var endpoint = endpoints[id % endpoints.length];
                this.setEndpoint(endpoint.url, id);
                this.setParams({
                    signature: endpoint.signature,
                    params: endpoint.params,
                    ajax: true
                }, id);
            }
        }

答案 1 :(得分:0)

如果文件很大并且启用了分块,则无法动态更改端点url。 我的解决方案是使用事件

callbacks:{
  onComplete:function(id,name,responseJSON,xhr) {
    console.log('> onComplete. id=' + id);
    console.log('> onComplete. name=' + name);
    console.log('> onComplete. responseJSON=' + JSON.stringify(responseJSON));
    console.log('> onComplete. uuid=' + responseJSON.uuid);

    if (responseJSON.success)
    {
      // call a httpRequest with the url you want.
    }
  }
}

答案 2 :(得分:0)

setEndpoint方法的一个有用示例。此代码将根据上传文件类型设置端点:

    callbacks: {
        onUpload:  function(id, name) {
            var file = this.getFile(id);
            var fileType = file.type;
            this.setEndpoint(endpointList[fileType], id);
        }
    }

您的endpointList

var endpointList = {
    'image/png': 'url/uploadimage',
    'video/mp4': 'url/uploadvideo',
    'text/plain': 'url/uploadtext'
}

答案 3 :(得分:-2)

旧代码:

 request: {
        endpoint: function() { ($('#submitUrlField').val() }
      }
                               |_ why need ( becasue it has not close ) match

尝试其中一个

request: {
   endpoint: function() { return $('#submitUrlField').val() }  // here you had `(`
}

request: {
   endpoint: $('#submitUrlField').val() 
}