Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在后端使用coldfusion通过AJAX/FormData上传文件_Ajax_Forms_Post_Encoding_Coldfusion - Fatal编程技术网

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

在后端使用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

我正在尝试允许用户将文档上载到我的服务器。我被迫在后端使用coldfusion MX 7

我正在使用
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的编辑和评论。这个答案可能应该删除。