页面中实现无刷新上传文件
Posted by quentin 在 Friday, 3 May 2013
在web中实现无刷新上传文件有几种方式:
1. 使用HTML5中的FormData和fileReader实现。但是这种方式受限于浏览器。如:IE只适用于IE10。
可参考:http://net.tutsplus.com/tutorials/javascript-ajax/uploading-files-with-ajax/
2. 使用隐藏的iframe提交。
可参考:http://confi.blog.51cto.com/5271328/1174071
最近,在Drupal 7里发现内容类型(content type)为image的字段都可以实现无刷新上传。所以很想知道它是怎么实现的。经过研究发现,其实Drupal7内引入了一个js lib——jquery.form.js。
使用挺简单的:
index.html
<html> <head> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.js"></script> <script src="http://malsup.github.com/jquery.form.js"></script> <script> // wait for the DOM to be loaded $(document).ready(function() { // bind 'myForm' and provide a simple callback function $('#myForm').ajaxForm(); }); </script> </head> <body> <form id="myForm" action="upload.php" method="post"> <input type="file" name="images[]"/><BR> <input type="file" name="images[]"/><BR> <input type="submit" value="Submit Comment" /> </form> </body> </html>
upload.php
<?php $invalid = 0; foreach ($_FILES["images"]["error"] as $key => $error) { if ($error == UPLOAD_ERR_OK) { $name = $_FILES["images"]["name"][$key]; move_uploaded_file( $_FILES["images"]["tmp_name"][$key], "uploads/" . $_FILES['images']['name'][$key]); } else { $invalid++; } } if (! $invalid) { echo "<h2>Successfully Uploaded Images</h2>"; } else { echo "<h2>Something error.</h2>"; }
博客分类:
添加新评论