我已成功将fine uploader实施到我的项目中。我使用addInitialFiles方法将其与之前上传的文件一起填充。
我想要做的是为每个呈现的文件预览添加一个下载按钮,既可以是用户添加的文件,也可以是“加载”文件。使用addInitialFiles预填充时。将按钮添加到标记模板非常简单,但我仍然坚持最惯用的方式:
我将文件下载网址存储在一个mongo集合中,该集合即时返回并填充addInitial文件方法。
如果它出现:我不希望有一个好的上传者处理'下载,我只是试图将下载功能编入其UI:)
欣赏任何/所有建议/指针!
答案 0 :(得分:0)
<li>
。qq.status.UPLOAD_SUCCESS
状态更改。getItemByFileId
找到特定文件的锚链接。在回复下载GET请求时,您需要确保服务器返回正确的Content-Disposition
标头。
答案 1 :(得分:0)
这可能有助于某人向每个上传的文件添加自定义下载按钮。
我已经测试过FineUploader 5.16.2版。
使用的引用链接-callback events和initial file list
文件上传器的代码为(用于下载按钮的两个事件):
var defaultParams = {};
$('#fine-uploader-gallery').fineUploader({
template: 'qq-template-gallery',
thumbnails: {
placeholders: {
waitingPath: 'waiting-generic.png',
notAvailablePath: 'not_available-generic.png'
}
},
validation: {
itemLimit: 10,
// acceptFiles: 'image/*',
// allowedExtensions: ['mp4','jpeg', 'jpg', 'gif', 'png']
},
session: { /** initial file list **/
endpoint: '/uploaded_files',
params: defaultParams
},
request: { /** new upload file request **/
endpoint: '/upload_files'
},
callbacks: {
/** Event to initial files with download link
array(
array('id' => xxx, 'name' => xxx, 'size' => xxx, 'thumbnailUrl' => xxx, 'uuid' => xxx, 'url' => fileUrl),
array('id' => xxx, 'name' => xxx, 'size' => xxx, 'thumbnailUrl' => xxx, 'uuid' => xxx, 'url' => fileUrl2),
...
}
**/
onSessionRequestComplete: function(id, name, responseJSON){
id.forEach((item, index) => {
var serverPathToFile = item.url,
$fileItem = this.getItemByFileId(index);
if (responseJSON.status == 200) {
$($fileItem).find(".qq-download-option") /** Custom Anchor tag added to Template **/
.attr("href", serverPathToFile)
.removeClass("hide");
}
});
},
/** Event to newly uploaded file with download link
responseJSON : array('success' => 'true', 'filename' => xxx, 'unique_id' => xxx, 'url' => fileurl)
**/
onComplete: function(id, name, responseJSON, xhr){
var serverPathToFile = responseJSON.url,
$fileItem = this.getItemByFileId(id);
if (responseJSON.success) {
$($fileItem).find(".qq-download-option") /** Custom Anchor tag added to Template **/
.attr("href", serverPathToFile)
.removeClass("hide");
}
}
},
deleteFile: {
enabled: true,
forceConfirm: true,
method: 'DELETE',
endpoint: '/delete_files',
customHeaders: {},
params:defaultParams
}
});