SSH(STRUTS2+SPRING+HIBERNATE)實現檔案上傳功能
首先是上傳頁面(upload.jsp)
主要程式碼如下,其中檔案欄位按自己所需可以改,但在Action中也必須增減相應欄位來接受,
- <s:form action=“fileUploadAction” method=“post” enctype=“multipart/form-data”>
- <s:file name=“upload” label=“檔名” />
- <s:textfield name=“author” label=“上傳者” />
- <s:textfield name=“description” label=“檔案描述” />
- <s:submit value=“上傳” />
- </s:form>
增加一個上傳檔案的上傳檔案功能的Action
- package edu.bjtu.resource.action;
- import com.opensymphony.xwork2.ActionSupport;
- import edu.bjtu.resource.service.ResourceService;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.util.Date;
- /**
- *
- * @author yilee
- */
- public class FileUploadAction extends ActionSupport {
- private static final long serialVersionUID = 1L;
- // 代表上傳檔案的File物件
- private File upload;
- // 上傳檔名
- private String uploadFileName;
- // 上傳檔案的MIME型別
- private String uploadContentType;
- // 上傳檔案的描述資訊
- private String description;
- // 儲存上傳檔案的目錄,相對於WEB應用程式的根路徑,在struts.xml中配置
- private String uploadDir;
- //作者
- private String author;
- //日期
- private Date date;
- //
- private ResourceService resourceService;
- //儲存結果
- private String result;
- //省略Getter和Setter方法
- @Override
- public String execute() throws Exception {
- // 得到儲存上傳檔案的目錄的真實路徑
- File dir = new File(“C:\upload”);
- // 如果該目錄不存在,就建立
- if (!dir.exists()) {
- dir.mkdirs();
- }
- int pos = uploadFileName.lastIndexOf(“.”);
- uploadContentType = uploadFileName.substring(pos + 1);//檔案字尾名
- date = new Date();//當前日期
- InputStream is = new FileInputStream(upload);
- OutputStream os = new FileOutputStream(new File(dir, uploadFileName));
- byte[] buf = new byte[1024];
- int len = –1;
- while ((len = is.read(buf)) != –1) {
- os.write(buf, 0, len);
- }
- is.close();
- os.close();
- setUploadDir(“C:\upload”);//儲存路徑
- if (resourceService.saveFile(uploadFileName, uploadDir, author, description, date)) {
- result = “{suc:1, msg:’上傳成功!’}”;
- } else {
- result = “{suc:0, msg:’上傳失敗!’}”;
- }
- return SUCCESS;
- }
- }
Service層
核心方法
- public class ResourceServiceImpl implements ResourceService {
- private ResourceDao resourceDao;
- //省略Getter和Setter方法
- public boolean saveFile(String fileName, String fileDir, String author, String description, Date date) {
- if (resourceDao.save(fileName, fileDir, author, description, date)) {
- return true;
- } else {
- return false;
- }
- }
- }
運算元據庫,Dao層
- public class ResourceDaoImpl extends HibernateDaoSupport implements ResourceDao {
- public boolean save(String fileName, String fileDir, String author, String description, Date date) {
- resource rs = new resource();
- rs.setAuthor(author);
- rs.setDescription(description);
- rs.setFileDir(fileDir);
- rs.setFileName(fileName);
- rs.setDate(date);
- try {
- getHibernateTemplate().save(rs);
- return true;
- } catch (Exception e) {
- e.printStackTrace();
- return false;
- }
- }
- }
Model層 資原始檔resource.java
- public class resource {
- private int id;
- private File doc;//文獻
- private String fileName;//名稱
- private String contentType;//型別
- private String fileDir;//路徑
- private Date date;//上傳日期
- private String author;//作者
- private String description;//註釋
- //按需新增屬性
- //省略Getter和Setter方法
- }
Hibernate對映檔案resource.hbm.xml
- <?xml version=“1.0″ encoding=”UTF-8″?>
- <!DOCTYPE hibernate-mapping PUBLIC “-//Hibernate/Hibernate Mapping DTD 3.0//EN” “http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd”>
- <hibernate-mapping package=“edu.bjtu.resouce.model”>
- <class name=“edu.bjtu.resource.model.resource” table=“resource”>
- <id column=“resource_id” name=“id” type=“integer”>
- <generator class=“increment”/>
- </id>
- <property column=“fileName” name=“fileName” type=“string”/>
- <property column=“fileDir” name=“fileDir” type=“string”/>
- <property column=“author” name=“author” type=“string”/>
- <property column=“description” name=“description” type=“string”/>
- <property column=“date” name=“date” type=“date”/>
- </class>
- </hibernate-mapping>
Struts配置檔案
- <?xml version=“1.0″ encoding=”UTF-8″ ?>
- <!DOCTYPE struts PUBLIC
- “-//Apache Software Foundation//DTD Struts Configuration 2.0//EN”
- “http://struts.apache.org/dtds/struts-2.0.dtd”>
- <struts>
- <!– 上傳檔案的臨時目錄 –>
- <constant name=“struts.multipart.saveDir” value=“C:\x”></constant>
- <!– 上傳檔案的總大小限制 –>
- <constant name=“struts.multipart.maxSize” value=”102400000″></constant>
- <!– 資原始檔配置 –>
- <constant name=“struts.custom.i18n.resources”
- value=“ApplicationResources”>
- </constant>
- <package name=“file” extends=“struts-default”>
- <action name=“fileUploadAction” class=“fileUploadAction”>
- <result name=“success”>/successUpload.jsp</result>
- <param name=“uploadDir”>/WEB-INF/UploadFiles</param>
- </action>
- </package>
- </struts>
Spring配置檔案
- <?xml version=“1.0″ encoding=”UTF-8″?>
- <!DOCTYPE beans PUBLIC “-//SPRING//DTD BEAN//EN” “/WEB-INF/dtd/spring-beans.dtd”>
- <beans default-lazy-init=“true”>
- <bean id=“resourceDao” class=“edu.bjtu.resource.dao.impl.ResourceDaoImpl”>
- <property name=“sessionFactory” ref=“sessionFactory”></property>
- </bean>
- <bean id=“resourceService” parent=“transactionProxy”>
- <property name=“target”>
- <bean class=“edu.bjtu.resource.service.impl.ResourceServiceImpl”>
- <property name=“resourceDao”>
- <ref local=“resourceDao”/>
- </property>
- </bean>
- </property>
- </bean>
- <bean id=“fileUploadAction” class=“edu.bjtu.resource.action.FileUploadAction” lazy-init=“false”>
- <property name=“resourceService”>
- <ref local=“resourceService”/>
- </property>
- </bean>
- </beans>
上傳成功後頁面, successUpload.jsp 核心程式碼
- <h1>上傳成功</h1>
- 檔名:<s:property value=“uploadFileName” /><br/>
- 檔案大小:<s:property value=“upload.length()” /><br/>
- 檔案型別:<s:property value=“uploadContentType” /><br/>
- 上傳者 : <s:property value=“author” /><br/>
- 檔案描述:<s:property value=“description” /><br/>
當然,肯定還需要加各種攔截器,在Struts中,任何Action都需要攔截器.這一檔案上傳模組中必須新建攔截器,以驗證是否登入,驗證許可權等功能,這裡省略攔截器.關於攔截器的詳細使用,也許過幾天會詳細描述.
相關文章
- 使用Spring Boot實現檔案上傳功能Spring Boot
- SpringBoot實現檔案上傳功能詳解Spring Boot
- 自定義檔案上傳功能實現方法
- 【node】檔案上傳功能簡易實現
- ajax實現檔案上傳
- PHP實現單檔案、多檔案上傳 封裝 物件導向實現檔案上傳PHP封裝物件
- SpringCloudGateway閘道器服務實現檔案上傳功能SpringGCCloudGateway
- 教你如何實現c#檔案上傳下載功能C#
- .net web core 如何編碼實現檔案上傳功能Web
- 前端頁面上實現表單提交檔案上傳功能前端
- Vue實現多檔案上傳功能(前端 + 後端程式碼)Vue前端後端
- Spring mvc檔案上傳實現SpringMVC
- HttpFileCollection 實現多檔案上傳HTTP
- 檔案上傳原理和實現
- 使用Spring實現上傳檔案Spring
- 通過配置檔案(.htaccess)實現檔案上傳
- 使用java的MultipartFile實現layui官網檔案上傳實現全部示例,java檔案上傳JavaUI
- js實現帶上傳進度的檔案上傳JS
- Feign實現檔案上傳下載
- PHP實現圖片(檔案)上傳PHP
- SpringMVC多個檔案上傳實現SpringMVC
- Java檔案上傳如何實現呢?Java
- 關於node實現檔案上傳
- golang實現檔案上傳並轉存資料庫功能詳解Golang資料庫
- Linux如何實現斷點續傳檔案功能?Linux斷點
- SpringBoot專案實現檔案上傳和郵件傳送Spring Boot
- SpringMVC實現多檔案上傳原始碼SpringMVC原始碼
- SpringMVC實現檔案上傳&下載(2)SpringMVC
- python+selenium+autoit實現檔案上傳Python
- struts動態多檔案上傳實現
- Spring Cloud Feign的檔案上傳實現SpringCloud
- node中間層實現檔案上傳
- JAVA實現大檔案分片上傳斷點續傳Java斷點
- springboot整合百度富文字編輯器ueditor實現圖片上傳和檔案上傳功能Spring Boot
- 使用spring-webmvc6實現檔案上傳SpringWebMVC
- JavaScript+PHP實現影片檔案分片上傳JavaScriptPHP
- 前端實現檔案下載和拖拽上傳前端
- iTerm2 實現 ssh 自動登入,並使用 Zmodem 實現快速傳輸檔案
- spring-boot-route(三)實現多檔案上傳Springboot