作者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