【发布时间】:2013-10-16 05:00:59
【问题描述】:
在哪里可以指定 FineUploader 在上传到 Amazon S3 时创建的服务器名称的格式或模式?我需要更好地控制如何在 S3 上创建文件名和路径。谢谢。
【问题讨论】:
在哪里可以指定 FineUploader 在上传到 Amazon S3 时创建的服务器名称的格式或模式?我需要更好地控制如何在 S3 上创建文件名和路径。谢谢。
【问题讨论】:
使用objectProperties.key 选项。
您可以提供String 值或将预期键作为String 返回的函数。
以下示例演示了设置密钥和执行阻止操作 ($.post)。它使用jQuery插件,
// <snip>
objectProperties: {
key: function(fileId) {
var keyRetrieval = new qq.Promise(),
filename = $("#fineUploader").fineUploader("getName", fileId);
$.post("createKey.html", {name: filename})
.done(function(data) { keyRetrieval.success(data.key); })
.fail(function() { keyRetrieval.failure(); });
return keyRetrieval;
}
},
// </snip>
一个更简单的例子,
objectProperties: {
key: function(fileId) {
var filename = $("#fineUploader").fineUploader("getName", fileId);
return fileId + "/" + filename;
}
},
请记住,如果您想防止用户覆盖彼此的文件,您应该使这些键唯一!将每个上传文件放在一个带有随机密钥的文件夹中可以防止这种情况发生。
【讨论】:
qq.Promise 实例,这是Fine Uploader 对该模式的实现。当来自服务器的带有键名的响应进来时,您必须在返回的qq.Promise 实例上调用success 方法,并传入键名。返回一个承诺信号给 Fine Uploader,即使函数立即返回,仍然需要完成工作。见goo.gl/ufhqIp。