2013-03-18 87 views
0

我一直在嘗試完成這項任務,但無法成功。我可以上傳可以存儲在「C:\ apache-tomcat-6.0.33 \ work」中的文件,但是我不知道如何在數據庫中存儲路徑。這是我的代碼。如何上傳文件並使用struts2存儲數據庫中的路徑

package com.rajesh.action; 

import java.io.File; 
import org.apache.commons.io.FileUtils; 
import java.io.IOException; 

import com.opensymphony.xwork2.ActionSupport; 

public class UploadFile extends ActionSupport{ 
private File myFile; 
private String myFileContentType; 
private String myFileFileName; 
private String destPath; 

public String execute() 
{ 
/* Copy file to a safe location */ 
destPath = "C:/apache-tomcat-7.0.37/upload"; 

try{ 
System.out.println("Src File name: " + myFile); 
System.out.println("Dst File name: " + myFileFileName); 

File destFile = new File(destPath, myFileFileName); 
FileUtils.copyFile(myFile, destFile); 

}catch(IOException e){ 
e.printStackTrace(); 
return ERROR; 
} 

return SUCCESS; 
} 

public File getMyFile() { 
    return myFile; 
} 
public void setMyFile(File myFile) { 
    this.myFile = myFile; 
} 
public String getMyFileContentType() { 
    return myFileContentType; 
} 
public void setMyFileContentType(String myFileContentType) { 
    this.myFileContentType = myFileContentType; 
} 
public String getMyFileFileName() { 
    return myFileFileName; 
} 
public void setMyFileFileName(String myFileFileName) { 
    this.myFileFileName = myFileFileName; 
} 
} 

這裏是我的jsp上傳文件。

<%@ page contentType="text/html; charset=UTF-8"%> 
<%@ taglib prefix="s" uri="/struts-tags"%> 
<html> 
<head> 
<title>Struts 2 - Login Application | ViralPatel.net</title> 
</head> 

<body> 
<h2>Struts 2 - Login Application</h2> 
<s:actionerror /> 
<s:form action="login" method="post"> 
<s:textfield name="username" key="label.username" size="20" /> 
<s:password name="password" key="label.password" size="20" /> 
<s:submit method="execute" key="label.login" align="center" /> 
</s:form> 
</body> 
</html> 

這裏是我的struts.xml

<?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.enable.DynamicMethodInvocation" 
value="false" /> 
<constant name="struts.multipart.maxSize" value="1000000" /> 
<constant name="struts.devMode" value="false" /> 
<constant name="struts.custom.i18n.resources" 
value="ApplicationResources" /> 

<package name="default" extends="struts-default" namespace="/"> 
<action name="login" class="com.rajesh.action.LoginAction"> 
<result name="success">admin.jsp</result> 
<result name="error">loginstruts.jsp</result> 
</action> 
<action name="upload" class="com.rajesh.action.UploadFile"> 
<result name="success">/success.jsp</result> 
<result name="error">/error.jsp</result> 
</action> 
</package> 
</struts> 

請幫我,我是新Struts2的這個,任何幫助,將不勝感激。

+0

你在dao圖層中使用了哪個框架?休眠或JPA – 2013-03-18 10:58:39

+0

我使用jdbc,我沒有使用任何休眠或JPA。該動作由struts2控制。 – 2013-03-18 11:36:08

+0

@RajeshAcharya那麼,你想如何使用JDBC的動作是由struts2控制的? – 2013-03-18 15:07:48

回答

0

將文件上傳到目標路徑後,在您的動作中寫入數據庫邏輯,或者您可以創建DAO類來連接數據庫並將記錄插入到該動作中,並在struts動作中使用該類。您需要在此行之後放置數據庫連接代碼您的代碼..

FileUtils.copyFile(myFile,destFile);

示例代碼:

//To be write after above line in your action class 
String filePathToStoreInDB = destPath+"\\"+myFileFileName; 
MyDAO myDAO = new MyDAO(); 
String result = myDAO.insertRecord(filePathToStoreInDB); 
if(result.equals("success")){ 
//proceed your logic 
}else{ 
//your logic to display errro message 
} 

//logic in DAO class to insert record 
public class MyDAO{ 
//Your code to insert record in database 
return "success"; //if record inserted successfully 
retrun "fail"; //if record failed to insert 
} 
} 

注意:您可以列式數據庫的VARCHAR2或VARCHAR取決於您的要求。

相關問題