dojo upload file 範例

dojo 要做 AJAX 方式的檔案上傳其實是透過 iframe 來實做才有辦法實做 , 因此 dojo 特別提供一組指令 dojo.io.iframe 方法很簡單 , 網頁範例如下

 

<script src="/xxx/dojo-path/dojo.js"
	djConfig="parseOnLoad: true, isDebug: false"></script>
<script>
	dojo.require("dojo.parser");
	dojo.require("dojo.io.iframe");
	function doUpload() {
		dojo.io.iframe.send( {
 			url: 'test.php',
			form: 'frm' ,
			method: "post",
			handleAs: "json",
			load: function(obj , ioArgs) {
				alert( obj.message );
			} ,
			error: function(response, ioArgs) {
				console.debug(response);
			}
		)
	}
</script>

<form method="post" id="frm" enctype="multipart/form-data">
上傳的檔案 : <input type="file" name="upfile">
<button onclick="doUpload()">上傳</button>
</form>

在 Server 端要注意一點 , dojo 的方式是需要把回應的 ajax 內容(例如 json格式) 放到一個 <textarea> 內 所以 test.php 會如下

<?php
	$response = array( 'status' => 'success' , 'message' => '成功' , );
	echo "<textarea>" . json_encode( $response ) . "</textarea>";
?>

要注意 <form> 表單一定要有 method , 據我測試若不指定 method="POST" , FireFox 是會根據 dojo.io.iframe.send()  所指定的方式 POST 送出資料 , 但 IE7 會以 GET 送出

5 則評論在 dojo upload file 範例.

  1. Pigo,你好。 我的後臺是用python寫的,用的是web.py框架,我做web的經驗較少,請問後臺接受到文件後該返回什麽?我前台dojo照你的代碼寫了,上傳是可以,但是上傳成功後總會進error方法,不知道是什麽原因,瀏覽器的控制臺也沒有報錯。

發佈留言