struts上傳文件夾
㈠ struts2批量上傳文件提示以下異常
struts.multipart.saveDir沒有配置。
struts.multipart.saveDir用於指定存放臨時文件的文件夾,
於是在,struts.xml配置文件中增加如下:
<constant
name="struts.multipart.saveDir"
value="/tmp"/>
設置臨時文件上傳路徑。
㈡ 請問struts2上傳文件怎麼保存到指定的文件夾(不是保存在tomcat裡面)
自己在接受文件時,你把文件寫到你自己想寫到的文件夾就可以了,不要使用tomcat里的servlet api獲取文件路徑即可。
㈢ Struts2中怎麼上傳以*.jar格式結尾的文件看了好都是圖片格式,XML、txt格式等,就是沒有jar格式滴。
下面是我的一個示例
Struts2-文件上傳示例
1.在Struts2項目(Struts2)下導入上傳文件必要的jar包
commons-fileupload-1.2.1.jar
commons-io-1.3.2.jar
2. 文件上傳頁面(fileUpload.jsp)
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head><title>文件上傳頁面</title></head>
<body>
<form action="fileupload.action" method="post" enctype="multipart/form-data"><!-- 對於文件上傳,form應滿足的配置 -->
username:<input type="text" name="username"><br/>
file:<input type="file" name="file"><br/>
<input type="submit" value="submit">
</form>
</body>
</html>
3.定義上傳文件的Action( UploadAction.java)
package com.zlc.struts2;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class UploadAction extends ActionSupport {
private String username;
private File file;//要上傳的具體文件
private String fileFileName;//表示文件名字(固定寫法)
private String fileContentType;//文件類型(必須滿足約束的名字),定義該欄位將會獲取文件的類型
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public File getFile() {
return file;
}
public void setFile(File file) {
this.file = file;
}
public String getFileFileName() {
return fileFileName;
}
public void setFileFileName(String fileFileName) {
this.fileFileName = fileFileName;
}
public String getFileContentType() {
return fileContentType;
}
public void setFileContentType(String fileContentType) {
this.fileContentType = fileContentType;
}
@Override
public String execute() throws Exception {
/*HttpServletRequest req = ServletActionContext.getRequest();
String root = req.getRealPath("/upload");//找到文件需要存儲的路徑
*/
String root = ServletActionContext.getServletContext().getRealPath("/upload");//和上面注釋的一樣,都能獲得絕對路徑
InputStream is = new FileInputStream(file);//FileInputStream就從文件系統中的某個文件中獲得輸入位元組。通過打開一個到實際文件的連接來創建一個 FileInputStream
System.out.println("fileFileName: "+fileFileName);//列印一下來獲得文件名
File destFile = new File(root, fileFileName);//創建一個目標文件,指定目標文件的位置和文件名
OutputStream os = new FileOutputStream(destFile);//創建一個向指定 File 對象表示的文件中寫入數據的文件輸出流。
byte[] buffer = new byte[4096];
int length=0;
while((length=is.read(buffer))!=-1){//從輸入流中讀取數據的下一個位元組;如果到達流的末尾,則返回 -1
os.write(buffer, 0, length);
/*將指定 byte 數組中從偏移量 0 開始的 length 個位元組寫入此輸出流。
元素 b[0] 是此操作寫入的第一個位元組,b[length-1] 是此操作寫入的最後一個位元組。*/
}
is.close();
os.close();
return SUCCESS;
}
}
4.文件上傳結果頁面,用於顯示結果信息(fileUploadResult.jsp)
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>文件上傳結果頁面</title>
</head>
<body>
username:<s:property value="username"/><br/>
name:<s:property value="fileFileName"/><br/>
type:<s:property value="fileContentType"/><br/>
</body>
</html>
5. struts2配置文件(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.devMode" value="true" />
<package name="struts2" namespace="/" extends="struts-default">
<action name="fileupload" class="com.zlc.struts2.UploadAction">
<result name="success">/fileUploadResult.jsp</result>
</action>
</package>
</struts>
6.注意一點,別忘了在項目的WebRoot下面建立一個文件夾upload,用以存放上傳的文件
7.在地址欄里輸入http://localhost:8080/Struts2/fileUpload.jsp進行驗證,jar文件是可以上傳的
㈣ struts2中上傳文件時報404錯誤
如果說配置文件欄位名都沒有錯的話那就是說你的上傳的文件超過了4M,而fileupload默認的上傳限度為4M!如果沒有跟改配置的話那就會拋出異常!而在struts2中則是返回為input!而你又在struts.xml中沒有配置<result name = "input">/test.jsp</result>所以為出現404!如果先要根治的話!你需要在配置文件中配置一下<constant name="struts.multipart.maxSize" value="20480000"/>
value的值你可以看著設!最大限度是2G
㈤ struts2可以上傳整個文件夾(裡面全是圖片)嗎求指點
可以 ,只要你將文件類型制定好就可以了,但是你必須想將其壓縮
例如<param name="allowedTypes">file/jar,file/zip</param>
㈥ struts2 上傳文件夾不存在時如何自動創建文件夾
String path=ServletActionContext.getServletContext().getRealPath("Upload") + "/" +fileFileNames;
File file=new File(path);
if(!file.exists()){
file.mkdirs();
}