这段javascript代码如下所示。注意,当file input元素的值发生变化时(即,一旦他们选择了要上传的文件),就会调用该命令
plugin.fileUpload = function(el)
{
el = $(el);
form = el.closest('form');
var files = el.get(0).files;
console.log(files.length)
var formData = new FormData();
for (var i = 0; i < files.length; i++)
{
var file = files[i];
console.log(file);
formData.append('files[]', file, file.name);
}
formData.append("username", "blablabl@gmail.com");
var xhr = new XMLHttpRequest();
xhr.open('POST', form.attr('action'), true);
xhr.onload = function () {
if (xhr.status === 200) {
toastr.success('Successfully loaded');
}
else
{
alert('An error occurred!');
}
};
xhr.send(formData);
console.log(files);
console.log(formData);
}
请原谅所有控制台日志。它的目的是显示输出和调试。
您将看到,我还附加了一个username字段,只是为了测试帖子是否在控制器中使用了一些完整的数据。的确是。以下是记录$this->request->data
数组的输出:
2014-06-18 17:51:41 Error: RequestsController::upload_files - Line 45
2014-06-18 17:51:41 Error: Array
(
[username] => blablabl@gmail.com
)
FileList { 0=File, length=1, item=item(), more...}
FormData { append=append()}
有什么想法吗??
啊,这绝对是个陷阱
通过控制器中的FormData访问上传的文件就像访问任何提交表单的PHP脚本中的文件一样。
看来,为了操作这些文件,我需要使用普通的$_files变量来访问它们。
function upload_files()
{
if($this->request->is('post'))
{
CakeLog::write('error', print_r($_FILES, true));
}
}
2014-06-18 22:13:29 Error: Array
(
[files] => Array
(
[name] => ReadMe.txt
[type] => text/plain
[tmp_name] => /tmp/phpOUTn8l
[error] => 0
[size] => 3627
)
)
本文向大家介绍ajax使用formdata上传文件流,包括了ajax使用formdata上传文件流的使用技巧和注意事项,需要的朋友参考一下 今天在做项目的时候涉及到了ajax上传文件流的问题,由于是移动端两个页面的两个表单使用同一个ajax地址进行上传数据给后台,数据中涉及到了不同类型的input,其中存在了file类型的input,导致无法使用表单序列化直接传输数据。 只存在传递一般的参数时,可
我试图通过使用FormData通过AJAX上传文件。如果我提交AJAX调用而没有选择任何要上传的文件,post工作正常,服务器上接收到其他字段(不是文件上传)。但是,如果我选择一个要上传的文件,调用到达服务器时没有任何数据(在PHP中,$_POST和$_FILES数组都是完全空的)。我知道如果您没有告诉jQuery不要设置contentType可能会发生这种情况,但是我将contentType和p
问题内容: 这是我使用拖放功能动态生成的HTML。 这是我的JavaScript代码: 问题答案: 为了正确使用表格数据,您需要执行2个步骤。 准备工作 您可以将整个表单交给FormData()进行处理 或为FormData()指定确切的数据 发送表格 带有jquery的Ajax请求将如下所示: 之后,它将发送ajax请求,就像您使用 更新:如果没有in选项,该请求将无法工作,因为所有文件都必须通
问题内容: 这是我使用拖放功能动态生成的html。 这是我的js代码… 问题答案: 为了正确使用表格数据,您需要执行2个步骤。 准备工作 您可以将整个表单交给FormData()进行处理 或为FormData()指定确切的数据 发送表格 带有jquery的Ajax请求将如下所示: 之后,它将发送ajax请求,就像您提交常规表格一样 更新:如果没有in选项,该请求将无法工作,因为所有文件都必须通过P
问题内容: 我对jQuery和Ajax函数还比较陌生,但是过去几天一直在使用Ajax表单。我在尝试上传图像时遇到文件上传问题。在寻找资源时,我找不到任何有用的东西,因为它们似乎过于复杂,毫无意义,没有任何解释,这无助于我进一步学习。 我已经编写了以下代码来处理Ajax中的图片上传: 这向文件发送了一个请求,但是没有发送数据,基本上我的表单实际上是这样的: 似乎没有任何数据在标头中传递,我认为我将通
问题内容: 当我使用XMLHttpRequest时,使用可以正确上传文件。但是,当我切换到时,我的代码将中断。 这是有效的原始代码: 这是我失败的尝试: 我究竟做错了什么?如何使用AJAX正确上传文件? 问题答案: 您必须添加方法,以便jQuery不会更改标头或数据(这会破坏当前代码)。