【问题标题】:How to append file upload paths to a Form using JavaScript?如何使用 JavaScript 将文件上传路径附加到表单?
【发布时间】:2023-03-26 11:51:01
【问题描述】:

以下是我拥有的一些 jQuery/JavaScript 代码,用于处理我拥有的表单上的文件上传。用户可以根据需要上传任意数量的文件,上传文件后,我会在 Div 中显示上传文件的预览图像。

我需要帮助的是,我需要以某种方式将上传的文件添加到隐藏的表单字段中,这样当他们提交表单时,它会发布与其他文件一起上传的每个文件的文件名/路径表单数据到我的后端 PHP 脚本。

我只是不确定最好的方法吗?

我在想这样的事情可能会奏效......

<input type="text" name="uploads[]" id="uploads" value="FILE PATH HERE">

但我不确定如果上传超过 1 次,每次添加新文件时这是否会覆盖以前的值?

关于如何处理这个问题的任何想法?我真正需要的是在提交表单后访问后端中每个上传文件的文件名。

jQuery(function () {
    jQuery('#fileupload').fileupload({
        url: '<?php echo Mage::getUrl('signwizard/index/saveFile') ?>',
        sequentialUploads: true,
        dataType: 'json',
        dropZone: jQuery('#dropzone'),
        pasteZone: jQuery(document),
        autoUpload: true,

        done: function (e, data) {
            jQuery.each(data.result.files, function (index, file) {
                jQuery('<div/>').html('<img src="/channelUploads/thumbnail/'+file.name+'"> '+file.name).appendTo(jQuery('#imageContainer'));


                // Add Uploaded image path and name to a Form field so thatr the file path will be posted when the Form is submitted.....

            });
        }
    });
});

【问题讨论】:

  • 您建议的输入应该可以正常工作* - 您尝试过吗? *你不应该重复 id,并且应该使用 type="hidden"

标签: javascript php jquery forms


【解决方案1】:

详细说明我的评论,只要为每个文件附加一个新的输入,就可以了:

done: function (e, data) {
    jQuery.each(data.result.files, function (index, file) {
         jQuery('<div/>').html('<img src="/channelUploads/thumbnail/'+file.name+'"> '+file.name).appendTo(jQuery('#imageContainer'));

         jQuery('#yourformid').append('input type="hidden" name="uploads[]" value="'+file.name+'">');

     });
}

【讨论】:

    【解决方案2】:

    只需为每个文件添加一个新输入,(jQuery v3.6.0)

    done: function (data) {
         $.each(data, function(index, value) {    
             $('#yourformid').append('<input type="hidden" name="uploads[]" value="'+value.fileName+'">');
    
         });
    }
    

    【讨论】:

    • 虽然这段代码 sn-p 可以解决问题,但它没有解释为什么或如何回答这个问题。请include an explanation for your code,因为这确实有助于提高您的帖子质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
    • @LucaKiebel 是的,伙计,实际上由于日程繁忙,我没有给出解释,但我现在更新了我的答案。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多