好的上传器,习惯的方式添加下载按钮,每个文件上传
Fine uploader, idiomatic way to add download button to each file uploaded
我已经成功地在我的项目中实现了fine uploader。我使用addInitialFiles方法来填充以前上传的文件。
我想做的是添加一个下载按钮到每个文件预览渲染,无论是作为一个用户添加的文件和'加载'时使用addInitialFiles预填充。将按钮添加到标记模板中非常简单,但是我不知道最习惯的方法是:
- 监听我添加到标记中的下载按钮上的点击事件(例如使用一个好的上传器API方法,或者我自己的监听器?)
- 如何将必要的信息与每个按钮/缩略图关联起来以调用文件下载
我将文件下载url存储在一个mongo集合中,该集合将返回并填充addInitial files方法。
在它出现的情况下:我不希望有一个好的上传器'处理'下载,我只是试图编织下载功能到它的UI:)
感谢任何/所有的建议/指点!
- 在
<li>
的某个地方添加锚链接到模板。 - 监听
qq.status.UPLOAD_SUCCESS
状态变化。 - 成功后,更新锚链接以指向适当的下载端点。您可以使用
getItemByFileId
找到特定文件的锚链接。
您需要确保您的服务器在响应下载GET请求时返回正确的Content-Disposition
标头。
希望这对在每个上传的文件中添加自定义下载按钮的人有所帮助。
我已经测试了FineUploader版本5.16.2。
Used ref links - callback events &初始文件列表
文件上传器的代码如下(用于下载按钮的两个事件):
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
}
});
相关文章:
- 通过ajax到php文件获取单选按钮值
- 点击Angularjs中的按钮上传文件
- 链接/按钮从子文件夹下载文件--浏览器只是浏览
- 单击按钮更改加载到表中的JSON文件
- 很棒的共享按钮application.coffee文件在哪里
- 在Node Webkit应用程序中从DOM单击按钮时运行批处理文件
- 如何使按钮作为输入类型文件
- 我可以通过点击html文件中的按钮来记录我的屏幕/网页吗
- 传递来自<输入类型=“;文件“;id=“;文件“/>尽管还有一个按钮点击
- 使用单个按钮上传文件
- 打开'选择文件'窗口单击锚链接(跳过单击'选择文件'按钮)
- 创建一个HTML文件,该文件使用DOM在用户每次单击按钮时交换两段内容
- 如何用HTML中的JSON外部文件填充下拉按钮
- 点击jQuery按钮下载文件
- 如何使用javascript中的浏览按钮读取所选文件的内容
- 如何在单击按钮时编辑文件的内容?PHP
- 按钮未运行为按钮,找不到如何使运行JS文件
- 谷歌扩展:如何在弹出窗口中按下按钮时在我的javascript文件中运行函数
- 如果从文件输入按钮调用 .ajaxSubmit() 时,它是必需的表单
- Google +触发按钮文件输入