我想在一个典型的形式中使用FineUploader:
<form enctype="multipart/form-data" method="post"">
<input name="fileupload" type="file" ">
<input type="text" name="title" size="45" maxlength="100">
<textarea name="description" cols="40" rows="8"></textarea>
<input type="hidden" name="op" value="Add">
<input type="submit" value="Upload">
所以我实际上想主要替换<input name="fileupload" type="file" ">
部分。
不幸的是我对JavaScript和jQuery jet不是很熟悉,也不知道如何做到这一点。 我找不到任何示例代码,其中FineUploader与其他数据一起使用。
我将不胜感激任何帮助!
由于 Kashuda
答案 0 :(得分:5)
虽然Fine Uploader不需要jQuery(或其他任何库),但它确实有一个可选的jQuery plug-in。如果你不反对使用jQuery,我建议你使用jQuery插件,因为jQuery让生活更轻松。
有两种方法可以抚养这只猫。在任何一种情况下,公式大致相同。也就是说,让Fine Uploader处理文件,为每个提交的文件即时创建输入元素,然后在Fine Uploader将相关文件发送到服务器之前将这些输入的值传回Fine Uploader。
<div id="myFineUploaderContainer"></div>
<button id="uploadSelectedFiles">Upload Selected Files</button>
$('#myFineUploaderContainer').fineUploader({
request: {
endpoint: '/my/upload/endpoint'
},
autoUpload: false
})
.on('submitted', function(event, id, name) {
var fileItemContainer = $(this).fineUploader('getItemByFileId', id);
$(fileItemContainer)
.prepend('<input type="text" name="name">')
.append('<input type="text" name="description">');
})
.on('upload', function(event, id, name) {
var fileItemContainer = $(this).fineUploader('getItemByFileId', id),
enteredName = $(fileItemContainer).find('INPUT[name="name"]').val(),
enteredDescr = $(fileItemContainer).find('INPUT[namme="description"]').val();
$(this).fineUploader('setParams', {name: enteredName, description: enteredDescr}, id);
});
$('#uploadSelectedFiles').click(function() {
$('#myFineUploaderContainer').fineUploader('uploadStoredFiles');
});
您可能需要添加上述代码以满足您的需求,并在适当的时候提供CSS,但这是正确方向的开始。在上面,您正在等待Fine Uploader在将列表项添加到表示所选文件的DOM时回拨给您。当您收到该回调时,您将在列表项的开头添加一个文本输入元素(对于用户提供的名称),在列表项的末尾添加另一个元素(对于用户提供的描述。然后,就在之前Fine Uploader将文件发送到您的服务器,它会调用您的“upload”事件处理程序,您可以在其中读取输入元素的值并将它们提供给Fine Uploader,通过文件ID将它们与文件相关联.Fine Uploader将包含此信息以及多部分编码的POST请求中的文件,它将发送到您的服务器。
点击处理程序将通知Fine Uploader将文件发送到您的服务器。您的用户在选择所有文件并在适当时填写输入字段后将单击此按钮。通常,Fine Uploader会在选择文件后立即将文件发送到服务器,但可以通过切换autoUpload
选项来更改文件。根据您的情况,关闭自动上传是最有意义的。
使用FineUploader模式意味着您不必过多担心用户界面,因为大多数操作都是为您完成的,并且您可以使用它。删除功能,以及进度条和其他UI好东西免费。
您的第二选择是使用FineUploaderBasic mode。这使您可以最大程度地控制UI,但它需要最多的工作,因为您需要完全创建自己的UI。这意味着您需要使用大多数callbacks来构建您的UI,并使其与Fine Uploader的内部状态和相关文件保持同步。
例如,如果你想要进度条,你需要自己渲染它们并根据定期通过Fine Uploader调用的onProgress
回调处理程序传递给你的信息来更新它们。所有这些都很好,如果您对javascript,HTML和CSS非常熟悉,在某些情况下可能更受欢迎。但是,如果你不是,你可能想尝试坚持使用FineUploader模式。
FineUploaderBasic模式不包括开箱即用的拖放支持,但如果您愿意,可以轻松集成Fine Uploader's standalone File Drag & Drop module。