我正在尝试允许用户将文档上传到我的服务器。我被迫在后端使用coldfusion MX 7。
我正在使用FormData
构造函数并通过ajax发送文件。
这是构造表单并发送数据的客户端代码。变量f
是我要上传的File
对象。
_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);
}
});
这是应该在服务器端进行工作的cfcomponent
/ 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>
我在这里做错了什么,有人可以帮忙吗?
答案 0 :(得分:1)
我想我必须更改destination
参数才能使用完整路径。
现在一切正常。
答案 1 :(得分:0)
无论该类型是默认类型,您仍可能需要在表单中明确设置:
<form action="yourActionPage.cfm" method="post" enctype="multipart/form-data">