struts+hibernate 怎么将上传文件的名字,路径,大小存入mysql数据库,最好有详细代码的,

我的邮箱491132622@qq.com... 我的邮箱491132622@qq.com 展开
 我来答
zhaotao_king
2011-10-27 · TA获得超过2455个赞
知道大有可为答主
回答量:863
采纳率:0%
帮助的人:1147万
展开全部
①使用struts2的上传jar包,commons-fileupload.jar
②配置struts配置文件,在action下配置上传文件的拦截器,例
<action name="uploadAction" class="com.action.UploadAction ">
<result name="success">
index.jsp
</result>
<interceptor-ref name="fileUpload">
<param name="allowedTypes"></param>
</interceptor-ref>
<interceptor-ref name="defaultStack" />
</action>
③用action处理上传文件(下面有例子UploadAction.java)
④将路径和大小使用Hibernate存入数据库。

下面是上传的action类
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Date;

import org.apache.struts2.ServletActionContext;

public class UploadAction extends BaseAction {

public UploadAction() {
super("");
}

private static final long serialVersionUID = -7091926458432816740L;

private static final int BUFFER_SIZE = 16 * 1024;

// 使用File数组封装多个文件域对应的文件内容
private File[] file;

// 使用字符串数组封装多个文件域对应的文件名
private String[] fileFileName;

// 接受依赖注入的属性
@SuppressWarnings("unused")
private String savePath;

private String path;

// 结果显示消息
private String msg;

// 只用这个方法也可以实现多图片上传功能
public String execute() throws Exception {
System.out.println(ServletActionContext.getRequest().getSession()
.getServletContext().getRealPath("/"));
// 取得需要上传的文件数组
File[] files = this.getFile();
// 遍历每个需要上传的文件
for (int i = 0; i < files.length; i++) {
fileFileName[i] = i + new Date().getTime()
+ getExtention(fileFileName)[i];
// 以服务器的文件保存地址和原文件名建立上传文件输出流
FileOutputStream fos = new FileOutputStream(getSavePath()
+ "upload/img\\" + getFileFileName()[i]);
System.out.println(getSavePath() + "upload\\img\\"
+ getFileFileName()[i]);
path = "/upload/img/" + getFileFileName()[i];
// 以每个需要上传的文件建立文件输入流
FileInputStream fis = new FileInputStream(files[i]);
// 将每个需要上传的文件写到服务器对应的文件中
byte[] buffer = new byte[BUFFER_SIZE];
int len = 0;
while ((len = fis.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
}
//HttpServletRequest request = ServletActionContext.getRequest();
//String paths = request.getContextPath();
//path = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+paths+"/";
this.msg = "上传成功!";
return SUCCESS;
}

// 获得每个文件的扩展名
public String[] getExtention(String[] fileNames) {
String[] extentions = new String[fileNames.length];
for (int i = 0; i < extentions.length; i++) {
int pos = fileNames[i].lastIndexOf(".");
extentions[i] = fileNames[i].substring(pos);
}
return extentions;
}

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 getSavePath() {
return ServletActionContext.getRequest().getSession()
.getServletContext().getRealPath("/");
}

public void setSavePath(String savePath) {
this.savePath = savePath;
}

public String getMsg() {
return msg;
}

public void setMsg(String msg) {
this.msg = msg;
}

public String getPath() {
return path;
}

public void setPath(String path) {
this.path = path;
}

}

参考资料: 有什么问题,可以追问或者去我空间留言!~

必须有店铺
2011-10-31
知道答主
回答量:29
采纳率:0%
帮助的人:17.3万
展开全部
要看你用的struts是哪个版本的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式