在后端使用coldfusion通过AJAX/FormData上传文件
我正在尝试允许用户将文档上载到我的服务器。我被迫在后端使用coldfusion MX 7 我正在使用在后端使用coldfusion通过AJAX/FormData上传文件,ajax,forms,post,encoding,coldfusion,Ajax,Forms,Post,Encoding,Coldfusion,我正在尝试允许用户将文档上载到我的服务器。我被迫在后端使用coldfusion MX 7 我正在使用FormData构造函数,并通过ajax发送文件 下面是构建表单和发送数据的客户端代码。变量f是我要上传的文件对象 _submit: function (e) { var f = this.$.agenda.file; var req = new XMLHttpRequest(); var data = new FormData(); data.append('up
FormData
构造函数,并通过ajax发送文件
下面是构建表单和发送数据的客户端代码。变量f
是我要上传的文件
对象
_submit: function (e) {
var f = this.$.agenda.file;
var req = new XMLHttpRequest();
var data = new FormData();
data.append('upload', f);
req.onreadystatechange = function () {
if (req.readyState == XMLHttpRequest.DONE) {
console.log(req)
}
}.bind(this);
req.open("POST", "validator.cfc?method=uploadfile");
req.send(data);
}
});
这是应该在服务器端执行工作的cfc组件
/cffunction
:
<cfcomponent output="false">
<cffunction name="uploadfile" access="remote" returnType="string">
<cffile action="upload" filefield="upload"
destination="data/"
nameconflict="makeunique"
result="uploadResult">
<cfreturn uploadResult>
</cffunction>
但当我尝试使用它时,我得到一个冷聚变错误,说明:
String index out of range: -20
The error occurred on line 45
43 : <cffile action="upload" filefield="upload"
44 : destination="data/"
45 : result="uploadResult">
46 : <cfreturn uploadResult>
47 : </cffunction>
字符串索引超出范围:-20
错误发生在第45行
43 :
46 :
47 :
我做错了什么,有人能帮忙吗
无论该enctype是默认值,您可能仍需要在以下表单中明确设置它:
<form action="yourActionPage.cfm" method="post" enctype="multipart/form-data">
我想我必须更改
destination
参数才能使用完整路径
现在一切都正常了。f在调用
数据之前包含哪些内容。append('upload',f)代码>?@Miguel-F啊!F实际上不是文件。我不小心抓到了文件名。现在,F指向该文件(问题中的代码保持不变),但我得到了一个新的错误。我编辑这个问题是为了反映这一点。很抱歉,这不是问题所在,请参阅我对@Miguel-F的编辑和评论。这个答案可能应该删除。