作者iam87king (沉默伤心)
看板Ajax
标题[问题] 取得input file的内容
时间Mon Nov 29 20:48:47 2010
各位好
我先描述一下我的问题
简单来说我有一个form,里面有各式各样的input
但我submit时不是用browser预设的form.submit()方式
而是透过Ajax把form序列化後用post送出
大概长这样
var j_form = $("#myform");
$.post("/xx/yy/zz/", j_form.serialize(), function(data){
........
});
在input中没有file时这一切非常的美好,天下太平
即便在有file时,我用Firefox也可以做处理
方法很笨,不过堪用,就是Firefox input file DOM中的getAsText method
将client上传的档案内容读入一个隐藏的input再送出,如下
var j_file = $("#myfile");
var j_input = $("<input type='hidden' name='myfile_s' />");
j_input.val(j_file.get(0).files[0].getAsText("utf-8")).appendTo(j_form);
$.post(.....同上.....);
因为档案内容都是文字,所以没问题
但是Chrome和IE就不能用这招了,因为没提供这个getAsText这个method
我想问的就是Chrome和IE有没有类似Firefox这种method,可以取出档案内容
看了一下Chrome好像只能取得file name跟file size
若无,有没有人有更好的方法用Ajax的方式上传档案
希望一个form所有要送的input(包括type=file的)可以在同一个request中完成
以上 感谢你看完
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.160.15.87
1F:推 kasimroll:将#myform的tag设enctype="multipart/form-data" 试试 11/30 00:57
3F:→ KeithYeh:也可以试试把表单action设成要处理上传的页面 12/01 17:17
4F:→ KeithYeh:然後把表单的target指到iframe,用一般submit的方式即可 12/01 17:18
5F:→ iam87king:感谢楼上各位的建议,我再试试 12/01 19:32