【问题标题】:How to upload files using several file input types?如何使用多种文件输入类型上传文件?
【发布时间】:2013-09-30 08:39:46
【问题描述】:

我需要使用多种文件输入类型上传多个文件。我知道这可以通过CTRL+单击文件的一种输入类型来完成。我使用 perl 作为我的后端部分。

   <form action="dsadsa" method="post" enctype="multipart">
    <tr>
        <td>
            <input type="file" id="file_upload" name="file_upload" multiple >
        </td>
    </tr>
    <tr>
        <td>
            <input type="file" id="file_upload" name="file_upload" multiple>
        </td>
    </tr>
    <tr>
        <td>
            <input type="file" id="file_upload" name="file_upload" multiple>
        </td>
    </tr>
    <tr>
        <td>
            <input type="file" id="file_upload" name="file_upload" multiple>
        </td>
    </tr>
    <tr>
        <td>
            <input type="file" id="file_upload" name="file_upload" multiple>
        </td>
    </tr>
    <tr>
   <input type="submit" />
   </form>

这是我的 HTML 部分。

我使用 ajaxForm 插件上传文件。

var options = {
            beforeSend: function () {

            },
            uploadProgress : function (event, position, total, percentComplete) {

            },
            success : function (data) {

            },
            error : function (response) {

            },
        };
        $('#myForm').ajaxForm(options);

但它无法获取任何参数(file_upload)

以防万一你想看看我的 perl 方面:

if ($path eq 'dsadas') {   #this is the path in the action part in the form
   my @fhs = cgi->upload('file_upload');  # this is what im talking about, this should get all the files. I also tried using trim_param() instead of cgi->upload.

}

【问题讨论】:

  • 你的意思是$cgi in cgi-&gt;upload('file_upload')
  • 不,但这也可能意味着。
  • 您的 html 无效(enctype/formid),您的 javascript 无效(formid),您的 perl 无效(小写“cgi”)——验证您的 html(validator.w3.org),以及复制/粘贴并注意拼写错误
  • 我的html和javascript无效是什么意思?
  • 我的意思并不多。 enctype 属性无效,请参阅 developer.mozilla.org/en-US/docs/Web/HTML/Element/form 。你的表单没有 id,所以$('#myForm') 不会做任何事情——你从 ajaxform 教程中复制了它,但你没有复制 html——所有这些细节都很重要

标签: jquery ajax perl


【解决方案1】:

基于此..

Can Perl's CGI.pm process Firefox's <input type="file", multiple=""> form fields?

在服务器端修复它:

未经测试的代码只是一个 hack/示例

 my @fhs = upload('file_upload');
 use File::Type;
 my $ft = File::Type->new();
 my $i = 0;
 my %mimes = { ( $i++ => $ft->checktype_contents(<$_>)) } @fhs;

或类似的东西..

这也有帮助 http://perldoc.perl.org/CGI.html#PROCESSING-A-FILE-UPLOAD-FIELD

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-06
    • 1970-01-01
    • 1970-01-01
    • 2014-10-23
    • 2023-03-21
    • 1970-01-01
    • 2015-08-12
    相关资源
    最近更新 更多