虽然精细上传不需要的jQuery(或任何其他库,对于这个问题)它有一个可选的jQuery plug-in。如果你不反对使用jQuery,我建议你使用jQuery插件,因为jQuery让生活变得更容易。
有几种方法可以给这只猫蒙皮。无论哪种情况,公式大致相同。也就是说,让Fine Uploader处理文件,为每个提交的文件即时创建输入元素,然后在Fine Uploader将相关文件发送到服务器之前,将这些输入的值传回给Fine Uploader。
选项#1 - FineUploader模式(使用预构建UI)
使用FineUploader mode:
<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将文件发送到您的服务器,它会调用您的“上传”事件处理程序,您可以在其中读取输入元素的值并将其提供给Fine Uploader,并通过文件ID将它们与文件相关联。Fine Uploader将包含此信息以及多部分编码的POST请求中的文件将发送到您的服务器
点击处理程序将发出Fine Uploader发送文件到您的服务器,您的用户将在选择所有文件并点击根据需要输出输入字段。通常情况下,Fine Uploader会在选择后立即向服务器发送文件,但这可以通过toggli来更改选择autoUpload
选项。对于你的情况,关闭自动上传是最有意义的。
使用FineUploader模式意味着您不必担心用户界面太多,因为它大部分都是为您完成的,并且您可以免费拖动功能以及进度条和其他UI好东西。
选项#2 - FineUploaderBasic模式(建立自己的UI)
你的第二个选择是使用FineUploaderBasic mode。这使您可以最大限度地控制UI,但它需要最多的工作,因为您需要完全创建自己的UI。这意味着您需要使用大多数callbacks才能构建您的用户界面并保持其与Fine Uploader的内部状态及相关文件同步。例如,如果您需要进度条,您需要自己渲染它们,并根据定期传递给您的信息对其进行更新,这些信息通过Fine Uploader调用的onProgress
回调处理程序定期传递给您。所有这些都很好,如果你对JavaScript,HTML和CSS感到满意,在某些情况下可能是首选。但是,如果你不是,你可能想尝试并坚持使用FineUploader模式。
FineUploaderBasic模式不包括开箱即用的拖放支持,但如果您愿意,您可以轻松集成Fine Uploader's standalone File Drag & Drop module。
我需要更多信息才能向您提供答案。首先,根据上面的代码,看起来您只希望用户能够选择一个文件。这是你的意图吗?其次,您是否也希望允许用户拖放要上传的文件? –
我有不同的地区/类别,用户可以上传文件。通常他们只上传一个文件。但在一种情况下,我需要上传两个文件。一个应该是预览文件(.jpg),第二个应该是主要对象(.zip)。拖放并不是必需的。我需要的是上传前的上传进度以及文件类型和文件大小检查。 (顺便说一句,我正在寻找jQuery选项) – Kashuda
有几种方法可以解决这个问题。因此,你的问题需要一个相当复杂,详细的答案。我会在接下来的6-9小时内完成一些完整的内容。 –