我正在使用json打开用户弹出窗口。
我以前在php上使用basename( $_FILES['userfile']['name'] )
,如何在perl上执行此操作?
服务器端代码:
#!/usr/bin/perl
use CGI;
print "Content-type: text/html;
Cache-Control: no-cache;
charset=utf-8\n\n";
@allowedExtensions =("jpg","tiff","gif","eps","jpeg","png");
my $q = CGI->new();
my $filename = $q->upload('userfile');
print "file name is $file_name";
客户端代码:
var post_obj = new Object();
new AjaxUpload('upload_attachment_button', {
action: 'upload.cgi',
type: "POST",
data: post_obj,
onChange: function() {},
onSubmit: function() {
$("#upload_attachment_button").addClass('ui-state-disabled');
$("#upload_proj_message").html('<span> class="loading">uploading...</span>');
},
onComplete: function(file, response) {
$("#upload_attachment_button").removeClass('ui-state-disabled');
alert(response);
}
});
答案 0 :(得分:1)
您似乎想要获取用户上传的文件的名称。如果您使用的是CGI
模块,那么这里是解决方案:
use CGI;
my $q = CGI->new();
my $filename = $q->param('userfile'); ## retrive file name of uploaded file
来自the manual:
不同的浏览器会为名称返回略有不同的内容。有些浏览器只返回文件名。其他人使用用户计算机的路径约定返回文件的完整路径。无论如何,返回的名称始终是用户计算机上文件的名称,与上传假脱机期间CGI.pm创建的临时文件的名称无关(见下文)。
<强>更新强>
抱歉,之前没有注意到。请在脚本开头添加use strict;
。它会强制你声明所有变量。您会在print
声明中看到错误输入:
print "file name is $filename"; ## must be $filename
要宣布@allowedExtensions
,请在首次使用前添加my
:
my @allowedExtensions =("jpg","tiff","gif","eps","jpeg","png");
此外,我相信当您打印HTTP标头时,行末尾不需要;
:
print "Content-type: text/html
Cache-Control: no-cache
charset=utf-8\n\n";
请始终use strict
。它将为您节省大量时间。