中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java實現文件上傳的方法有哪些

發布時間:2021-07-24 10:54:32 來源:億速云 閱讀:161 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關Java實現文件上傳的方法有哪些的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

一. uploadify:

uploadify控件的scripts和styles在這里:圖片上傳

JSP:

<%@ page contentType="text/html;charset=UTF-8" language="java" %> 
<%@ include file="../jsp/include/taglibs.jsp"%> 
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
 <head> 
 <title>Upload</title> 
 <script src="<c:url value="/scripts/jquery-1.8.3.min.js"/>" type="text/javascript"></script> 
 <script type="text/javascript" src="<c:url value="/scripts/jquery-admin/jquery-ui.js" />"></script> 
 <script type="text/javascript" src="<c:url value="/scripts/jquery-admin/component.js" />"></script> 
 <script type="text/javascript" src="<c:url value="/scripts/jquery-admin/jquery-validate.js" />"></script> 
 <script type="text/javascript" src="<c:url value="/scripts/jquery-admin/jquery-form.js" />"></script> 
 <script type="text/javascript"src="<c:url value="/scripts/jquery-admin/init.js" />"></script> 
 <script type="text/javascript"src="<c:url value="/scripts/jquery-admin/jquery.ui.datepicker-zh-CN.js" />"></script> 
 <link rel="stylesheet" href="<c:url value='/styles/admin/admin1.css'/>" rel="external nofollow" > 
  <link href="<c:url value=" rel="external nofollow" rel="external nofollow" /styles/jquery-ui/jquery-ui.css" />" rel="stylesheet" type="text/css" /> 
 <script src="<c:url value="/scripts/jquery-uploadify/jquery.uploadify.min.js"/>" type="text/javascript"></script> 
 <link rel="stylesheet" type="text/css" href="<c:url value=" rel="external nofollow" rel="external nofollow" /scripts/jquery-uploadify/uploadify.css"/>"> 
  
 <style type="text/css"> 
  #jidAttachTable {width:400px;font-size:14px;border:1px solid #d3d3d3;border-left-width:0;border-top-width:0;} 
  #jidAttachTable td{border: 1px solid #d3d3d3;text-align:left;padding:5px;border-right-width:0;border-bottom-width:0;} 
  #jidAttachTable .i-i-title{width:450px;} 
  #jidAttachTable .i-i-content{width:100px;} 
 </style> 
 
 <script type="text/javascript"> 
  $(function(){ 
   //視頻上傳 
   var uploadVideo = $('#file_upload_video').uploadify({ 
    'buttonText':'上傳視頻', 
    'multi': false, 
    'fileTypeDesc': '請選擇wmv視頻文件', 
    'fileTypeExt': '*.wmv', 
    'swf'  : '<c:url value="/scripts/jquery-uploadify/uploadify.swf"/>"', 
    'uploader' : '<c:url value="/uploadAttach.do"/>' , 
    'onUploadError': uploadVideoUploadError, 
    'onUploadSuccess':uploadVideoUploadSuccess 
   }); 
 
   function uploadVideoUploadError(){ 
    alert("上傳視頻發生錯誤"); 
   } 
 
   function uploadVideoUploadSuccess(file, data, response){ 
    var strs_ = data.split("@"); 
    var videoName_ = strs_[0]; 
    var videoPath_ = strs_[1]; 
 
    $("#vidioPreview").val("/upload/" + videoPath_); 
 
   } 
    
   var arrAttach = new Array(); 
 
   //將現有的附件加載到臨時數組中 
   var nowAttachIds_ = "${attachs}"; 
 
   //初始化現有的附件 
   if(nowAttachIds_ != null && nowAttachIds_ != ""){ 
    var ids_ = nowAttachIds_.split("@") ; 
    var i = 0; 
    for( ; i < ids_.length ; i++){ 
     arrAttach.push(ids_[i]); 
    } 
   } 
 
   //附件上傳 
   var uploadAttach = $('#file_upload_attach').uploadify({ 
    'buttonText':'上傳附件', 
    'multi': false, 
    'swf'  : '<c:url value="/scripts/jquery-uploadify/uploadify.swf"/>"', 
    'uploader' : '<c:url value="/uploadAttach.do"/>', 
    'onUploadError': uploadAttachUploadError, 
    'onUploadSuccess':uploadAttachUploadSuccess 
   }); 
 
   function uploadAttachUploadError(){ 
    alert("上傳過程中發生錯誤,您可以嘗試重復上傳一次!") 
   } 
 
   function uploadAttachUploadSuccess(file, data, response){ 
 
    var strs_ = data.split("@") ; 
    var documnetId_ = strs_[0]; 
    var fileName_ = strs_[1]; 
 
    var attach_ = "<tr class=\"jsClassDeleteAttachButtonTR\"> " + 
      " <td class='i-i-title'>" + fileName_ + "</td> " + 
      " <td class='i-i-content'><button class=\"jsClassDeleteAttachButton\" dataAttach="+ documnetId_ +">刪除</button></td>" + 
      " </tr>"; 
 
    arrAttach.push(documnetId_); 
    $("#jidAttachTable").append(attach_); 
   } 
 
   $(".jsClassDeleteAttachButton").live("click",function(){ 
 
    var data_ = $(this).attr("dataAttach"); 
 
    var i_ = 0; 
    for(;i_ < arrAttach.length; i_++){ 
     if(data_ == arrAttach[i_]){ 
      arrAttach.splice(i_,1); 
      break; 
     } 
    } 
    $(this).parent().parent().remove(); 
 
    //alert(arrAttach) 
   }); 
  }); 
  
  var videotag = ""; 
 
  $(function() { 
   $("#PreviewDiv").dialog({ 
    title: "視頻預覽", 
    autoOpen: false, 
    modal: true, 
    resizable: false, 
    position : "center", 
    width: "489px", 
    buttons: { 
     "關閉": function() { 
      $("#PreviewDiv").dialog("close"); 
 
     } 
    } 
   }); 
 
   $( "#PreviewDiv" ).on( "dialogopen", function( event, ui ) { 
    $("#PreviewDiv").html(videotag); 
   } ); 
 
   $( "#PreviewDiv" ).on( "dialogclose", function( event, ui ) { 
    $("#PreviewDiv").html(""); 
   } ); 
  }); 
  var video_root_path = "http://localhost:8080/ProjectTest/"; 
  function openDownloadFrame() { 
   var _storePreview= video_root_path + $("#vidioPreview").val(); 
   var _embed_head = '<EMBED src=\"'; 
   var _embed_tail = '\" width=\"450\" height=\"400\" type=\"audio/x-wav\" loop=\"false\" autostart=\"true\">' + '</EMBED>'; 
    
   videotag = _embed_head + _storePreview + _embed_tail; 
 
   $("#PreviewDiv").dialog("open"); 
  } 
 </script> 
 </head> 
 
<body> 
 <form:form id="form" name="basedata" modelAttribute="basedata" action="update.do" method="post" > 
 <div > 
  <div > 
   <input id="file_upload_video" name="file_upload_video" type="file" multiple="true"> 
  </div> 
  <div > 
   <input id="vidioPreview" type="text" name="${bad.attributeStore}" value="${basedata[storeName]}"/> 
   <input onclick="openDownloadFrame();" type="button" name="button" value="預覽"> 
  </div> 
 </div> 
 <div id='divContext' > 
  <div > 
   <input id="file_upload_attach" name="file_upload_attach" type="file" multiple="true"> 
  </div> 
  <div class="i-attachContainer"> 
   <table id="jidAttachTable"> 
    <c:forEach items="${attachList}" var="attach"> 
     <tr class="jsClassDeleteAttachButtonTR"> 
      <td class='i-i-title'>${attach.name}</td> 
      <td class='i-i-content'> 
       <button class="jsClassDeleteAttachButton" dataAttach="${attach.id}">刪除</button> 
      </td> 
      </tr> 
    </c:forEach> 
   </table> 
  </div> 
 </div> 
 <div id="PreviewDiv"> 
 </div> 
</form:form> 
</body> 
</html>

后臺Java:

package com.sun.fileUpload; 
 
import java.io.BufferedOutputStream; 
import java.io.File; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.util.Date; 
import java.util.Iterator; 
import java.util.LinkedList; 
import java.util.List; 
 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
 
import org.apache.commons.fileupload.FileItem; 
import org.apache.commons.fileupload.FileUploadException; 
import org.apache.commons.fileupload.disk.DiskFileItemFactory; 
import org.apache.commons.fileupload.servlet.ServletFileUpload; 
import org.springframework.stereotype.Controller; 
import org.springframework.ui.ModelMap; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestParam; 
import org.springframework.web.multipart.MultipartFile; 
 
@Controller 
public class upload{ 
 
 // 附件上傳 
 @RequestMapping("/uploadAttach.do") 
 public void attachUpload(ModelMap modelMap,HttpServletRequest request ,HttpServletResponse response) throws IOException { 
 
  System.out.println("upload file .... start"); 
 
  String savePath = request.getSession().getServletContext().getRealPath("/") + "upload"; 
 
  System.out.println("store path is :" + savePath); 
 
  File f1 = new File(savePath); 
 
  if (!f1.exists()) { 
   f1.mkdirs(); 
  } 
 
  DiskFileItemFactory fac = new DiskFileItemFactory(); 
  ServletFileUpload upload = new ServletFileUpload(fac); 
  upload.setHeaderEncoding("utf-8"); 
 
  List<FileItem> fileList = null; 
  try { 
   fileList = upload.parseRequest(request); 
  } catch (FileUploadException ex) { 
   ex.printStackTrace(); 
   return; 
  } 
 
  Iterator<FileItem> it = fileList.iterator(); 
  String name = ""; 
  System.out.println("deal the files ... start"); 
  //存儲完畢保存進入數據庫 
  //Document document = null; 
  while (it.hasNext()) { 
 
   FileItem item = it.next(); 
   if (!item.isFormField()) { 
 
    name = item.getName(); 
    long size = item.getSize(); 
    String type = item.getContentType(); 
 
    if (name == null || name.trim().equals("")) { 
     continue; 
    } 
 
    System.out.println("dealing file info:" + "fileName" + name + " size" + size + " type:" + type); 
 
    //擴展名格式: 
    if (name.lastIndexOf(".") >= 0) { 
     name.substring(name.lastIndexOf(".")); 
    } 
 
    //存文件到磁盤指定路徑 且存儲文件記錄存入數據庫,如果存儲發生故障,數據庫記錄也會創建失敗 
/*    document = new Document(); 
    document.setFileType(extName); 
    document.setFullName(name); 
    document.setDescription(name); 
    document.setName(name); 
    document.setUploadDate(new Date()); 
    document = documentManager.saveWithFileStore(document,item,savePath,extName);*/ 
    System.out.println(new Date() + "persist id :" + name); 
    File saveFile = new File(savePath + "/" + name); 
    try { 
     item.write(saveFile); 
    } catch (Exception e) { 
     e.printStackTrace(); 
     throw new RuntimeException(new Date() + "store file error"); 
    } 
   } 
  } 
 
  System.out.println("deal the files end"); 
  System.out.println("upload file .... end"); 
 
  response.getWriter().print(name + "@" + name); 
 } 
}

這里把數據庫更新給省略了,有需要可以自己添加。

除上傳外,其他實現功能:
1. 視頻上傳后的預覽功能
2. 視頻是單文件上傳,附件是多文件上傳和刪除

二. Spring默認的上傳功能:
JSP:

<%@ page contentType="text/html;charset=UTF-8" language="java" %> 
<%@ include file="../jsp/include/taglibs.jsp"%> 
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
 <head> 
 <title>Upload</title> 
 <script src="<c:url value="/scripts/jquery-1.8.3.min.js"/>" type="text/javascript"></script> 
 <script type="text/javascript" src="<c:url value="/scripts/jquery-admin/jquery-ui.js" />"></script> 
  
 <link rel="stylesheet" href="<c:url value='/styles/admin/ace.css'/>" rel="external nofollow" > 
  
 <style type="text/css"> 
  .file { 
   position: relative; 
   display: inline-block; 
   background: #428BCA; 
   border: 1px solid #99D3F5; 
   border-radius: 4px; 
   padding: 4px 12px; 
   overflow: hidden; 
   color: #000000; 
   text-decoration: none; 
   text-indent: 0; 
   line-height: 20px; 
  } 
  .file:link { 
   color: white; 
   text-decoration:none; 
  } 
  .file input { 
   position: absolute; 
   font-size: 100px; 
   right: 0; 
   top: 0; 
   opacity: 0; 
  } 
  .file:hover { 
   background: #1B6AAA; 
   border-color: #78C3F3; 
   color: white; 
   text-decoration: none; 
  } 
 </style> 
 
 </head> 
 
<body> 
 <form:form id="fileUploadForm" method="post" action="uploadFile.do" name="uploadfile" modelAttribute="uploadfile" enctype="multipart/form-data"> 
  點擊保存后上傳: 
  <a href="javascript:;" rel="external nofollow" class="file">選擇文件 
     <input type="file" name="videoFile" id="videoFile"> 
  </a> 
  <input type="text"  id="resourceUrl-field" name="resourceUrl" placeholder="資源地址" class="col-sm-12" value="${uploadfile}"/> 
  <input type="submit" value="保存" class="btn btn-sm btn-primary"> 
 </form:form> 
</body> 
</html>

后臺Java:

package com.sun.fileUpload; 
 
import java.io.BufferedOutputStream; 
import java.io.File; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.util.Date; 
import java.util.Iterator; 
import java.util.LinkedList; 
import java.util.List; 
 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
 
import org.apache.commons.fileupload.FileItem; 
import org.apache.commons.fileupload.FileUploadException; 
import org.apache.commons.fileupload.disk.DiskFileItemFactory; 
import org.apache.commons.fileupload.servlet.ServletFileUpload; 
import org.springframework.stereotype.Controller; 
import org.springframework.ui.ModelMap; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestParam; 
import org.springframework.web.multipart.MultipartFile; 
 
@Controller 
public class upload{ 
 @RequestMapping(value = "/uploadFile.do") 
 public String uploadController(HttpServletRequest request,ModelMap modelMap, 
   @RequestParam("videoFile") MultipartFile videoFile) throws IllegalStateException, IOException{ 
  String savePath = request.getSession().getServletContext().getRealPath("/") + "upload"; 
   
  try { 
   uploadSingleFile(savePath, videoFile, request.getSession().getServletContext().getRealPath("/")); 
  }catch (Exception e) { 
   return "/upload"; 
  } 
 
  modelMap.addAttribute("uploadfile", "upload/" + videoFile.getOriginalFilename()); 
   
  return "/upload"; 
 }  
 
 /** 
  * 
  * @param path 這個path 是upload的子目錄路徑 比如 path=/image 最終將下載到[root/upload/image/]目錄下 
  * @param file 
  * @return 
  * @throws java.io.IOException 
  */ 
 public static String uploadSingleFile(String path, MultipartFile file, String rootPath) { 
   
  if (!file.isEmpty()) { 
    
    byte[] bytes; 
    try { 
     bytes = file.getBytes(); 
     
     // Create the file on server 
     File serverFile = new File(path + "/" + file.getOriginalFilename()); 
     BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(serverFile)); 
     stream.write(bytes); 
     stream.close(); 
  
     System.out.println("Server File Location=" + serverFile.getAbsolutePath()); 
 
     return getRelativePathFromUploadDir(serverFile, rootPath).replaceAll("\\\\", "/"); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    
  }else{ 
   System.out.println("文件內容為空"); 
  } 
  return null;  
 } 
  
 /** 
  * 
  * @param file 
  * @return 返回從upload目錄下面的相對路徑 
  */ 
 public static String getRelativePathFromUploadDir(File file, String rootPath){ 
  if(null==file) 
   return ""; 
  String absolutePath = file.getAbsolutePath(); 
  if(absolutePath.indexOf(rootPath)!=-1 && rootPath.length()<absolutePath.length()) 
   return absolutePath.substring(absolutePath.indexOf(rootPath)+rootPath.length()); 
  else 
   return ""; 
 } 
}

Spring配置文件springmvc-servlet.xml中添加:

<bean id=”multipartResolver” class=”org.springframework.web.multipart.commons.CommonsMultipartResolver”> 
<property name=”defaultEncoding” value=”UTF-8″ /> 
</bean>

如果和uploadify同時使用的話,需要做一些修改,否則uploadify的上傳文件會被Spring攔截:

 <!-- 支持上傳文件 --> 
lt;bean id="multipartResolver" class="org.sun.com.MyMultipartResolver"> 
 <!--設置上傳文件的編碼格式,用于解決上傳的文件中文名亂碼問題 --> 
 <property name="defaultEncoding"> 
  <value>UTF-8</value> 
 </property> 
<property name="excludeUrls" value="/uploadAttach.do,/uploadVideo.do"/> 
lt;/bean>

org.sun.com.MyMultipartResolver: 

package org.sun.com; 
 
import javax.servlet.http.HttpServletRequest; 
 
import org.springframework.web.multipart.commons.CommonsMultipartResolver; 
 
/** 
 * @author Sun 
 */ 
public class MyMultipartResolver extends CommonsMultipartResolver { 
 private String excludeUrls;  
 private String[] excludeUrlArray; 
  
 public String getExcludeUrls() { 
  return excludeUrls; 
 } 
 
 public void setExcludeUrls(String excludeUrls) { 
  this.excludeUrls = excludeUrls; 
  this.excludeUrlArray = excludeUrls.split(","); 
 } 
 
 /** 
  * 這里是處理Multipart http的方法。如果這個返回值為true,那么Multipart http body就會MyMultipartResolver 消耗掉.如果這里返回false 
  * 那么就會交給后面的自己寫的處理函數處理例如剛才ServletFileUpload 所在的函數 
  * @see org.springframework.web.multipart.commons.CommonsMultipartResolver#isMultipart(javax.servlet.http.HttpServletRequest) 
  */ 
 @Override 
 public boolean isMultipart(HttpServletRequest request) { 
  for (String url: excludeUrlArray) { 
   // 這里可以自己換判斷 
   if (request.getRequestURI().contains(url)) { 
    return false; 
   } 
  } 
   
  return super.isMultipart(request); 
 } 
  
}

感謝各位的閱讀!關于“Java實現文件上傳的方法有哪些”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

堆龙德庆县| 全州县| 余干县| 汝城县| 台中市| 芦溪县| 榆树市| 昔阳县| 喀喇| 建瓯市| 托里县| 通海县| 永定县| 安塞县| 都昌县| 日喀则市| 邵武市| 罗田县| 兰坪| 翁牛特旗| 彝良县| 荃湾区| 屏东市| 芜湖县| 瑞昌市| 青阳县| 洪洞县| 翼城县| 江西省| 深州市| 塔河县| 黑龙江省| 彰化县| 通化县| 齐河县| 且末县| 永川市| 贵州省| 沁阳市| 赞皇县| 耒阳市|