在这个问题上抓了太久:使用jquery.form,(http://malsup.com/jquery/form)和PHP .我的$_FILES['someimage']被设置,但是错误号总是UPLOAD_ERR_NO_FILE,大小也是0。
JavaScript:
$('form input[type=file]').change(function () {
$(this).clone().appendTo('#imgform');
$('#imgform').ajaxForm();
$('#imgform').ajaxSubmit({
type: 'POST'
});
});附加如下:
<form id="imgform" method="POST" action="/api/images.php" enctype="multipart/form-data"></form>来自另一种具有沼泽标准文件输入的表单。
PHP日志是干净的,但是var_dumping $_FILES总是显示索引被设置为form元素的名称.但没有数据。
谢谢你们!(对不起,我知道jQuery类的问题在这些部分中太频繁了)。
编辑I找到了包含更多信息和建议的替代方案的Clone a file input element in Javascript。
我决定为非JavaScript浏览器创建一个表单,JavaScript/jQuery将单个表单分解为三种形式:
Head form -> File upload form -> tail form
然后,我可以发布文件上传异步,当点击尾巴的提交时,将表单粘合在一起,因为它们只是文本字段。
发布于 2010-05-18 10:55:14
当我尝试运行这个程序时,我看到了两件事。因为您正在克隆,所以我想知道您的文件输入是否存在于表单的上下文中。否则,$('form input[type=file]')将永远找不到要克隆的元素。
不过,最大的问题可能在于浏览器处理文件上传控件的方式。您不能以编程方式在文件输入控件上设置值--否则,作为web开发人员,自动将文件上传值设置为"c:\Files\MyPasswordFile.txt“并自动向用户提交表单将是非常简单的。
当我把你的代码改为:
<input type="file" name="imageFile" />
<form id="imgform" method="POST" action="/api/images.php" enctype="multipart/form-data">
</form>
<script>
$('input[type=file]').change(function() {
alert("ACTION");
$(this).clone().appendTo('#imgform');
//$('#imgform').ajaxForm();
//$('#imgform').ajaxSubmit(
// {
// type: 'POST'
// }
// );
});
</script>我可以看到上面的行为--字段是被克隆和附加的--但是它没有任何价值。由于克隆过程的一部分涉及设置字段值--这将违反安全限制,从而失败。
发布于 2010-05-18 10:54:09
由于安全原因,不能使用ajax发布文件,因为javascript不能访问任何本地硬盘驱动器。
有一些方法可以使用iFrames来模拟ajax发布。这个链接就是一个很好的例子。
http://www.ajaxf1.com/tutorial/ajax-file-upload-tutorial.html
https://stackoverflow.com/questions/2856081
复制相似问题