1. 程式人生 > >JS 實現上傳照片到伺服器 和 後臺處理處理這個照片

JS 實現上傳照片到伺服器 和 後臺處理處理這個照片

1.js進行圖片預覽 使用input標籤來選擇圖片,使用FileReader讀取圖片並轉成base64編碼,然後傳送給伺服器。

<html>
<body>
 <img id="image"src=""/>
<br/>
 <input type="file"onchange="selectImage(this);"/>
<br/>
 <input type="button"onclick="uploadImage();"value="提交"/>
<script>
 var image = '';
 function selectImage(file){
 if(!file.files || !file.files[0]){
return;
}
 var reader = new FileReader();
 reader.onload = function(evt){
 document.getElementById('image').src = evt.target.result;
 image = evt.target.result;
}
reader.readAsDataURL(file.files[0]);
}
 function uploadImage(){

$.ajax({

type:'POST',

 url: 'ajax/uploadimage', 

 data: {image: image},

 async: false,

 dataType: 'json',

 success: function(data){

if(data.success){

alert('上傳成功');

}else{

alert('上傳失敗');

}

},

 error: function(err){

alert('網路故障');

}

});

}
</script>
 <script src="jquery-1.11.1.min.js"></script>
</body>
</html>
2.伺服器接收資料,然後寫到磁碟
  1. import java.io.FileOutputStream;  
  2. import java.io.IOException;  
  3. import javax.servlet.ServletException;  
  4. import javax.servlet.http.HttpServlet;  
  5. import javax.servlet.http.HttpServletRequest;  
  6. import javax.servlet.http.HttpServletResponse;  
  7. import sun.misc.BASE64Decoder;   
  8. /**
     
  9.  * 上傳圖片。 
  10. */
  11. publicclass UploadImageAjax extends HttpServlet {  
  12. privatestaticfinallong serialVersionUID = 1L;  
  13. @Override
  14. protectedvoid doPost(HttpServletRequest req, HttpServletResponse resp)  
  15.  throws ServletException, IOException{  
  16. String image = req.getParameter("image");  
  17. // 只允許jpg
  18. String header ="data:image/jpeg;base64,"
    ;  
  19. if(image.indexOf(header) != 0){  
  20. resp.getWriter().print(wrapJSON(false));  
  21. return;  
  22. }  
  23. // 去掉頭部
  24. image = image.substring(header.length());  
  25. // 寫入磁碟
  26. boolean success = false;  
  27. BASE64Decoder decoder = new BASE64Decoder();  
  28. try{  
  29. byte[] decodedBytes = decoder.decodeBuffer(image);  
  30. String imgFilePath ="D://uploadimage.jpg";  
  31. FileOutputStream out = new FileOutputStream(imgFilePath);  
  32. out.write(decodedBytes);  
  33. out.close();  
  34. success = true;  
  35. }catch(Exception e){  
  36. success = false;  
  37. e.printStackTrace();  
  38. }  
  39. resp.getWriter().print(wrapJSON(success));  
  40. }  
  41. private String wrapJSON(boolean success){  
  42. return"{"success":"+ success +"}";  
  43. }  
  44. }  
3.配置檔案web.xml
  1. <web-app>
  2. <servlet>
  3. <servlet-name>UploadImage</servlet-name>
  4. <servlet-class>UploadImageAjax</servlet-class>
  5. </servlet>
  6. <servlet-mapping>
  7. <servlet-name>UploadImage</servlet-name>
  8. <url-pattern>/ajax/uploadimage</url-pattern>
  9. </servlet-mapping>
  10. </web-app>
4.需要注意的地方 需要jquery的支援:jquery-1.11.1.min.js 需要servlet的支援:servlet-api.jar 需要Base64解碼支援:sun.misc.BASE64Decoder。引入這個包eclipse可能會報錯,請按照http://blog.csdn.net/hurryjiang/article/details/6958146進行處理。
  • 描述: 上傳圖片的project
  • 下載次數: 2

http://www.thinksaas.cn/topics/0/348/348211.html