页面中实现无刷新上传文件
                          
              
        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>";  
}
博客分类: 
添加新评论