【发布时间】:2015-03-05 03:18:07
【问题描述】:
我正在开发纯 html/javascript 中的客户端程序,该程序能够将文件夹、文件及其内容作为参数发送到目标 cgi 脚本(即 saveFile.cgi )的发布请求中。
我能够从发布请求中检索数据,但我无法在脚本中使用这些表单数据创建文件/文件夹,但我可以使用 print 打印这些值。
另外,我可以使用我试图从发布请求中检索的确切字符串文字来创建文件/文件夹。我不明白我哪里出错了。
我在windows环境下编程:
客户代码:
var data = {
"folder": variant,
"file" : "metadata.json",
"content": response
};
$.post('../cgi-bin/demos/saveJSON.cgi', data, function(resp) {
// Do something with the request
}, 'json');
服务器端/CGI 脚本:
#!C:\perl\bin\perl.exe -wT
use CGI;
use JSON;
print "Content-type: text/html\n\n";
$query = new CGI;
$folder = $query->param("folder");
$file = $query->param("file");
$content = $query->param("content");
#print "Folder " . $folder ."<br/>";
#print "File " . $file ."<br/>";
#print "Content " . $content ."<br/>";
mkdir($folder, 0700) unless(-d $folder);
open(OS,">$folder/$file") or die("Cannot write to file");
print OS $content;
close(OS);
【问题讨论】:
-
为什么不用cgi方法
param来检索数据呢? -
@JE SUIS CHARLIE 它是检索数据的另一种选择,我知道,但即便如此也对我的情况没有帮助。
-
你应该总是测试
open的结果。 -
添加了一个die语句,检查是否打开成功。 mkdir $folder 也不成功,但 mkdir "myFolder" 即使 $folder = query->param('folder') 也是如此。