fine-uploader重新提交参数但不重新提交文件

时间:2013-06-18 13:50:41

标签: callback set user-input params fine-uploader

我正在使用精细上传程序来获取多个(大)文件并传递文件名以及其他用户输入参数。我这样做是通过在每个文件旁边创建一个文本输入框(名为'allele_freq'),然后将文件名和allele_freq参数传递给我的cgi脚本。
接下来会发生什么(或接下来会发生什么)是我使用allele_freq参数分析文件中的数据,然后将一些图像返回到页面供用户查看。
如果用户想要用新的allele_freq重新分析数据,我想要做的就是将文件名和新的allele_freq一起传递,即我不想再次上传文件。 我在下面粘贴了我的工作代码(它上传了多个文件以及每个文件的用户输入)然后是我无法工作的代码(它产生了一个'重新提交'按钮,但似乎没有做任何事情),以及代码中的一些评论/思考 我将非常感激地提供有关如何执行此操作的任何信息。我对上传器和Javascript都很新(你可以告诉我),所以请随意批评(当然是建设性的!)我的任何代码。
非常感谢,
格雷厄姆

<link href="fineuploader/fineuploader-3.6.4.css" rel="stylesheet">
<script src="fineuploader/jquery-2.0.1.js"></script>
<script src="fineuploader/jquery.fineuploader-3.6.4.js"></script>

<div id="multiFineUploader"></div>
<div id="triggeredUpload" class="btn btn-primary" style="margin-top: 10px;">
    <i class="icon-upload icon-white"></i> Upload now
</div>
<script>
$('#multiFineUploader').fineUploader({
request: {
    endpoint: 'src/lib/upload.cgi'
},
autoUpload: false,
 text: {
uploadButton: '<i class="icon-plus icon-white"></i> Select Files'
}
})
.on('submitted', function(event, id, name) {
    var fileItemContainer = $(this).fineUploader('getItemByFileId', id);
    $(fileItemContainer)
    .append('<input type="text" name="allele_freq">');
})
.on('upload', function(event, id, name) {
    var fileItemContainer = $(this).fineUploader('getItemByFileId', id),
    enteredAlleleFreq = $(fileItemContainer).find('INPUT[name="allele_freq"]').val();
    $(this).fineUploader('setParams', {allele_freq: enteredAlleleFreq}, id);
});

$('#triggeredUpload').click(function() {
    $('#multiFineUploader').fineUploader('uploadStoredFiles');

});
</script>

上面的代码工作正常

下面的代码不是

<div id="resubmitFreqs"></div>
<div id="retry" class="btn btn-success" style="margin-top: 10px;">
<i class="icon-upload icon-white"></i> Resubmit
</div>
<script>
$('#resubmitFreqs').fineUploader({
request: {
            //use a different script as shouldn't need to handle all the upload stuff
    endpoint: 'src/lib/resubmit.cgi'
}
)}
//get the information from the allele_freq box. Should it still be in scope?? If not, how do I get at it?
.on('upload', function(event, id, name) {
    var fileItemContainer = $(this).fineUploader('getItemByFileId', id),
    enteredAlleleFreq = $(fileItemContainer).find('INPUT[name="allele_freq"]').val();
    $(this).fineUploader('setParams', {allele_freq: enteredAlleleFreq}, id);
});
$('#retry').click(function() {
            //I presumably don't want to use 'uploadStoredFiles', but I'm not sure how to post my new parameters into the resubmit.cgi server-side script
    $('#resubmitFreqs').fineUploader('uploadStoredFiles');
 });
</script>

1 个答案:

答案 0 :(得分:0)

看起来你正试图将Fine Uploader弯曲成不是的东西。 Fine Uploader可能不应该参与您的流程的这一步骤,因为它的工作是将文件上传到您的服务器。它并不是一个多功能的Web应用程序。如果要在文件发送后的某个时间点向服务器发送其他数据,只需通过XHR发送带有该数据的POST请求。