1. 程式人生 > >java web檔案上傳與下載

java web檔案上傳與下載

jsp程式碼(檔案上傳)
   

   
  1. <form id="upLoad" method="post">
  2. <input type="file" id="yaFile" name="file"> <br/>
  3. <input
    id="fileSubmit" type="button" value="提交">
  4. </form>
js程式碼:這裡我選擇的是非同步提交
   

   
  1. $("#fileSubmit").click(function(){
  2. var formData = new FormData();
  3. formData.append("file", document.getElementById("upLoad").files[0]);
  4. $.ajax({
  5. cache: true,
  6. type: "POST",
  7. url:'路徑',
  8. data:formData,
  9. processData: false, //禁止jquery對DAta資料的處理,預設會處理
  10. contentType: false, //禁止設定請求型別
  11. async: false,
  12. error: function(request) {
  13. alert("上傳失敗");
  14. },
  15. success: function(data) {
  16. if(data==0){
                        alert("上傳成功");
   
} } });});
 
  
java程式碼:檔案上傳
   

   
  1. /**
  2. * 檔案上傳功能
  3. * @param file
  4. * @return
  5. * @throws IOException
  6. */
  7. @RequestMapping( "/upload")
  8. @ResponseBody
  9. public String upload(MultipartFile file,String faUrl,HttpServletRequest request) throws IOException{
  10. String path = request.getSession().getServletContext().getRealPath( "upload"); //檔案上傳路徑
  11. String fileName = file.getOriginalFilename();
  12. File dir = new File(path ,fileName);
  13. if(!dir.exists()){
  14. dir.mkdirs();
  15. }
  16. //MultipartFile自帶的解析方法
  17. file.transferTo(dir);
  18. return "0";
  19. }
js程式碼:檔案下載
   

   
  1. function onClick() {
  2. var url ="路徑"
  3. document.location.href=url;
  4. }
java程式碼:檔案下載
   

   
  1. /**
  2. * 檔案下載功能
  3. * @param request
  4. * @param response
  5. * @throws Exception
  6. */
  7. @RequestMapping( "/fileDown")
  8. @ResponseBody
  9. public void fileDown(HttpServletRequest request,HttpServletResponse response){
  10. //通過檔名找出檔案的所在目錄
  11. String path = request.getSession().getServletContext().getRealPath( "upload");
  12. ServletOutputStream out;
  13. //得到要下載的檔案
  14. File file = new File(path);
  15. try {
  16. //設定響應頭,控制瀏覽器下載該檔案
  17. response.setContentType( "multipart/form-data");
  18. //獲得瀏覽器資訊,並處理檔名
  19. String headerType=request.getHeader( "User-Agent").toUpperCase();
  20. String fileName = null;
  21. if (headerType.indexOf( "EDGE") > 0||headerType.indexOf( "MSIE")> 0||headerType.indexOf( "GECKO")> 0) {
  22. fileName=URLEncoder.encode(file.getName(), "UTF-8");
  23. } else{
  24. fileName= new String(file.getName().replaceAll( " ", "").getBytes( "utf-8"), "iso8859-1");
  25. }
  26. response.addHeader( "Content-Disposition", "attachment;filename="+fileName);
  27. response.addHeader( "Content-Length", "" + file.length());
  28. FileInputStream inputStream = new FileInputStream(file);
  29. out = response.getOutputStream();
  30. int b = 0;
  31. byte[] buffer = new byte[ 1024];
  32. while (b != - 1) {
  33. b = inputStream.read(buffer);
  34. //寫到輸出流(out)中
  35. if(b!=- 1)
  36. out.write(buffer, 0, b);
  37. }
  38. inputStream.close();
  39. out.close(); //關閉輸出流
  40. out.flush();
  41. } catch (IOException e) {
  42. e.printStackTrace();
  43. }
  44. }
以上為檔案上傳、檔案下載的全部程式碼。