【问题标题】:Upload file asynchronously post to Perl with jQuery使用 jQuery 将文件异步上传到 Perl
【发布时间】:2014-08-06 23:32:43
【问题描述】:

好吧,我花了 3 个月的时间在网上寻找编写代码,但每个人都通过 PHP 发布方法和从文本字段发送信息,这不是我想要的,我尝试了一切,可以使用一些现在帮忙。如果 PHP 是解决这个问题的唯一方法,它会是什么样子?

问题:截至目前,所有数据(名称、大小和后缀)都可以完美发送,无需通过 HTML 解析,当然也无需 JQ,但仅作为一次上传。

结果: 通过 jQuery 异步发送多个文件并发布到 cgi。进度条会很酷。

这是我发布到 CGI 的工作 HTML。

<FORM METHOD="POST" ACTION="index.cgi" ENCTYPE="form-data">
<INPUT TYPE="hidden" NAME="act" VALUE="Store">
<input name="data" type="file">
<INPUT TYPE="hidden" NAME="dir" VALUE="">
<input type="CHECKBOX" name="replace" value="1">Overwrite
<INPUT TYPE="submit" id="submit" VALUE="Start Upload">

JQ iv 一直在努力:

$('#submit').click(function(){
var act = $('#act').attr('value');
var data = $('#FileField').attr('value');
var dir = $('#dir').attr('value');
$.ajax({
    url: '/index.cgi',
    type: 'POST',
    data: "act=" + act + "&data=" + data + "&dir=" + dir,
  });
});

Perl 中的行:

(param("data"))

如果我能让 JQ 工作,那将是快乐的日子。 :)

需要调用的是通过Perl脚本作为post,如:

foobar.com/index.cgi?act=store

谢谢大家!

【问题讨论】:

    标签: javascript php jquery perl


    【解决方案1】:

    关于如何完成的概要

    在客户端做类似的事情:

    $.post('/index.cgi',{data: JSON.stringify(data, null, 2));
    

    在服务器端:

    use CGI;
    use JSON;
    use Data::Dumper;
    
    my $q = CGI->new;
    my $data = decode_json($q->param('data'));
    
    print Dumper $data;
    

    顺便说一句,您可以使用jQuery::File::Upload 模块。

    【讨论】:

    • 这只会发送文件的元数据,而不是实际的文件,对吗?我也像这样解析 CGI 中的数据: $data = upload("data") ||死“错误:$!”; $filesize = (-s $data); $filename = param("数据");
    • 啊,那为什么不使用 jQuery::File::Upload 呢?另见this
    猜你喜欢
    • 1970-01-01
    • 2019-12-20
    • 2018-06-11
    相关资源
    最近更新 更多