用webwork框架做upload的java讀取代碼
我的語言表達能力不是很好,說也許說不明白,可能給看的說得糊涂了,同樣
這個對做上傳得新手很有用,不啰嗦了,先寫代碼吧:一共4個地方要弄,
前臺,后臺,xwork和webwork.properties
前臺:
upload.jsp:
=================================================================
<%--
Created by IntelliJ IDEA.
User: lvjiachun
Date: 2006-5-3
Time: 9:32:35
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=utf-8" language="java" %>
<%@ taglib prefix="ww" uri="/webwork" %>
<html>
<head><title>upload</title></head>
<body><p align="center">
<ww:form action="upload.action" name="upload" method="post" enctype="multipart/form-data">
<ww:file name="file1" value="瀏覽" label="ReadFile"/>
<ww:file name="file2" value="瀏覽" label="ReadFile"/>
<ww:file name="file3" value="瀏覽" label="ReadFile"/>
<ww:file name="file4" value="瀏覽" label="ReadFile"/>
<ww:textfield name="model.fileURL" label="Road"/> //指定上傳得文件保存到哪里
<ww:submit/>
</ww:form></p>
</body>
</html>
=======================================================================
upload-success.jsp
=======================================================================
<%--
Created by IntelliJ IDEA.
User: lvjiachun
Date: 2006-5-3
Time: 9:38:04
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=utf-8" language="java" %>
<%@ taglib prefix="ww" uri="/webwork" %>
<html>
<head><title>upload-success</title></head>
<body>
<p align="center">
你已經上傳成功,
<a href="upload.jsp">請返回</a>
</p>
</body>
</html>
========================================================================
后臺:一共需要三個4個java文件
1. <FileMes>
package upload.until;
/**
* Created by IntelliJ IDEA.
* User: lvjiachun
* Date: 2006-5-3
* Time: 7:51:11
* To change this template use File | Settings | File Templates.
*/
public class FileMes {
private String fileName;
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public String getFilePath() {
return filePath;
}
public void setFilePath(String filePath) {
this.filePath = filePath;
}
private String filePath;
}
2.<FileSelect >
package upload.until;
/**
* Created by IntelliJ IDEA.
* User: lvjiachun
* Date: 2006-5-3
* Time: 7:51:23
* To change this template use File | Settings | File Templates.
*/
public class FileSelect {
private String fileName;
private String fileURL;
private String type;
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public String getFileURL() {
return fileURL;
}
public void setFileURL(String fileURL) {
this.fileURL = fileURL;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
3.<UploadUntil >
package upload.until;
import com.opensymphony.webwork.dispatcher.multipart.MultiPartRequestWrapper;
import com.opensymphony.webwork.dispatcher.multipart.MultiPartRequest;
import com.opensymphony.webwork.ServletActionContext;
import java.util.List;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Calendar;
import java.io.*;
/**
* Created by IntelliJ IDEA.
* User: lvjiachun
* Date: 2006-5-3
* Time: 7:51:00
* To change this template use File | Settings | File Templates.
*/
public class UploadUntil {
public static List<FileMes> Upload(String smallPath) throws IOException {
List<FileMes> fileMesList = new ArrayList<FileMes>();
String path = smallPath;
System.out.println("PATH 2:" + path);
MultiPartRequestWrapper multiWrapper = (MultiPartRequestWrapper) ServletActionContext.getRequest();
if (multiWrapper == null) return null;
Enumeration e = multiWrapper.getFileNames();
int i = 0;
//===============================================================//
//這個是單文件上傳的代碼;!!如果想做單文件上傳,把注釋掉的代碼去掉就可以了
// while (e.hasMoreElements()) {
// String inputValue = (String) e.nextElement();
// String contentType = multiWrapper.getContentType(inputValue);
// String flie1 = multiWrapper.getFilesystemName(inputValue);
// String fileName = flie1;
// System.out.println("FileName underfinded:" + fileName);
// String savePath = path + fileName;
// File file = multiWrapper.getFile(inputValue);
// if (file != null) {
// InputStream inStream = new FileInputStream(file.getPath());
// FileMes fm = new FileMes();
// fm.setFileName(flie1);
// System.out.println("FileName:" + fm.getFileName());
// System.out.println("SmallPath in UploadUntil.java" + smallPath);
// fm.setFilePath(smallPath + fileName);
// System.out.println("FilePath:" + fm.getFilePath());
// fileMesList.add(fm);
// System.out.println("SavePath:" + savePath);
// FileOutputStream fs = new FileOutputStream(savePath);
// byte[]buffer = new byte[1444];
// int length;
// int bytesum = 0;
// int byteread = 0;
// while ((byteread = inStream.read(buffer)) != -1) {
// bytesum += byteread;
// fs.write(buffer, 0, byteread);
// }
//============================================================//
// 下面這個是多文件上傳-------------------
while (e.hasMoreElements()) {
String inputValue = (String) e.nextElement();
String contentType = multiWrapper.getContentType(inputValue);
String flie1 = multiWrapper.getFilesystemName(inputValue);
String fileName = Calendar.getInstance().getTime().getTime() + "-" + i + flie1;
String savePath = path + fileName;
File file = multiWrapper.getFile(inputValue);
if (file != null) {
InputStream inStream = new FileInputStream(file.getPath()); //讀入原文件
FileMes fm = new FileMes();
fm.setFileName(flie1);
fm.setFilePath(smallPath + fileName);
fileMesList.add(fm);
FileOutputStream fs = new FileOutputStream(savePath);
byte[] buffer = new byte[1444];
int length;
int bytesum = 0;
int byteread = 0;
while ((byteread = inStream.read(buffer)) != -1) {
bytesum += byteread; //字節數 文件大小
fs.write(buffer, 0, byteread);
}
//==============================================================//
inStream.close(); //關閉輸入流
i++;
if (file.exists()) {
file.delete();
} //如果上傳的文件存在則將其刪除;
}
}
return fileMesList;
}
}
4.也就是最后一個,action<UploadfilesAction>
package upload.fileupload;
import com.opensymphony.xwork.ActionSupport;
import com.opensymphony.xwork.Action;
import com.opensymphony.xwork.ModelDriven;
import upload.until.FileSelect;
/**
* Created by IntelliJ IDEA.
* User:lvjiachun
* Date: 2006-5-3
* Time: 7:52:34
* To change this template use File | Settings | File Templates.
*/
public class UploadfilesAction extends ActionSupport implements Action, ModelDriven {
FileSelect fileMes = new FileSelect();
public String upload() throws Exception {
String smallPath = fileMes.getFileURL();
System.out.println(smallPath+"xiaosao");
java.io.File myFilePath = new java.io.File(smallPath);
if (smallPath != null) {
if (!myFilePath.exists()) {
myFilePath.mkdir();
System.out.println("*******MaKe DIR!*********");
}
}
upload.until.UploadUntil.Upload(smallPath);
return SUCCESS;
}
public Object getModel() {
return fileMes; //To change body of implemented methods use File | Settings | File Templates.
}
}
**********************************************************************
xwork中
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.1.1//EN" "http://www.opensymphony.com/xwork/xwork-1.1.1.dtd">
<xwork>
<include file="webwork-default.xml"/>
<package name="upload" extends="webwork-default">
<interceptors>
<interceptor name="upload" class="com.opensymphony.webwork.interceptor.FileUploadInterceptor"/>
<interceptor-stack name="uploadStack">
<interceptor-ref name="upload"/>
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="WSStack"/>
<action name="upload" class="upload.fileupload.UploadfilesAction" method="upload">
<result name="success">
<param name="location">/upload/upload-success.jsp</param>
</result>
<interceptor-ref name="uploadStack"/>
<interceptor-ref name="model-driven"/>
</action>
</package>
</xwork>
webwork.properties
在webwork.properties中要加上這段代碼
webwork.multipart.parser=com.opensymphony.webwork.dispatcher.multipart.PellMultiPartRequest
webwork.multipart.saveDir=d:\\ #這個是上傳文件的默認保存路徑#
xiaosao:具體的解析過程不是我寫的,是我工作室boss寫的,我也沒那個能力!具體怎么用
看代碼就足夠了,這個是我在做上傳得時候用到的,開始做的時候沒有任何思路,在網上找
也沒找到,憋了半個月也沒弄出來,用webwork可以得到上傳得文件,但傳得內容只有upload這
幾個字(傳txt時候),后來才清楚是要解析過程的,后臺的前三段代碼就是解析過程,我是個新
手,這個東西做的讓我腦袋都大了,為了大家方便,發到這里,有需要的來看一下!代碼是好
使得,需要自己認真調試!有什么不足給點意見