使用后端的coldfusion通过AJAX / FormData上传文件

时间:2015-10-13 17:18:28

标签: ajax forms post encoding coldfusion

我正在尝试允许用户将文档上传到我的服务器。我被迫在后端使用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>

我在这里做错了什么,有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

我想我必须更改destination参数才能使用完整路径。

现在一切正常。

答案 1 :(得分:0)

无论该类型是默认类型,您仍可能需要在表单中明确设置:

<form action="yourActionPage.cfm" method="post" enctype="multipart/form-data">