1 文件上传
Action层方法
/**
* 文件上传的action
* @return
*/
public String update() {
try {
this.initBase(); // 初始化
// 防止重复更新
if (request.getParameter("struts.token").equals(
request.getSession().getAttribute("struts.token"))) {
String objId = this.utilBean.getObjId();
// 用户ID
Long eid = this.userBean.getEid();
/** 设定上传图片 */
if (this.detailBean != null) {
File file = this.detailBean.getFile(); // 上传文件
File dir1 = new File("C:\\uploadEmp");
// 如果该目录不存在,就创建s
if (!dir1.exists()) {
dir1.mkdirs();
}
// File dir = new File(dir1, "学员反馈");
// if (!dir.exists()) {
// dir.mkdirs();
// }
InputStream is = new FileInputStream(file);// 通过打开一个到实际文件的连接来创建一个
// FileInputStream,该文件通过文件系统中的
// File 对象
// file 指定
detailBean.setSize(Long.valueOf(is.available()));
if(detailBean.getSize()> 1024*1024*5){ //大于5M时
this.utilBean.setMessage(this.getText("err.public.file.size"));
return this.list();
}
OutputStream os = new FileOutputStream(new File(dir1,detailBean.getFileName()));
// 根据dir路径名称字符串和name路径名称字符串去创建一个新的file实例
byte[] buf = new byte[1024];
int len = -1;
while ((len = is.read(buf)) != -1) {
os.write(buf, 0, len);
}
is.close();
os.close();
detailBean.setUrl("C:\\uploadEmp");
Venderupload vender = venderuploadTask.detail2model(detailBean);
venderuploadTask.savevender(vender);
// 入库成功Message
this.utilBean.setMessage(this.getText("msg.submit.success"));
this.list();
}
}
return "update";
} catch (Exception e) {
logger.error(StackTraceUtil.getStackTrace(e));
} finally {
}
return ERROR;
}
重点:bean层必须有
private File file; // 图片文件
private String fileContentType; // 文件类型,必须是File定义的file……
private String fileName; // 文件名称//重点此出的set方法不是自动生成的注意看
而且fileName的set方法不能生成,必须是以下格式,其他字段可自动生成,否则action层会一直报找不到filename
public void setFileName(String fileName) {
this.fileName = fileName;
}
public void setFileFileName(String fileName) {
this.fileName = fileName;
}
2 jsp页面form的配置鼻血家后面的属性
附件: |
*(上传不得大于5M) |
|
如上所示,上传文件的源码。
二 下载文件的源码:
Action 层方法:
/**
* 文件流输出
*
* @return
*/
public InputStream getDownloadFile() {
try {
// 文件的详细信息
Venderupload vend= venderuploadTask.findById(Long.valueOf(user_id));
String url = vend.getUrl();
String filename=vend.getFileName();
// String filename=URLEncoder.encode(publicfile.getFileName(), "UTF-8");
String downUrl= url+";
File file = new File(downUrl);
InputStream stream = new FileInputStream(file);
return stream;
} catch (Exception e) {
e.printStackTrace();
} finally {
}
return null;
}
此处页面必须传给变量filename,如下:
','','')"> |
js代码:
function doview(id, filename) {
document.getElementById("frm").action = "<%=path%>/course/venderuploaddownload.do?user_id="+ id + "&fileName=" + filename ; //?传参数
document.getElementById("frm").submit();
return true;
}
注意下载的重点是struts配置文件必须如下配置不能变动:
${fileType}
attachment;filename="${fileName}"
downloadFile
补充一点自己写的上传大小的限制为5M,
必须在中文,和txt中配置如下:
property配置:
1 err.public.file.size=\u4E0A\u4F20\u6587\u4EF6\u4E0D\u80FD\u5927\u4E8E5M!
txt配置:
2 err.public.file.size=上传文件不能大于5M!
阅读(3821) | 评论(0) | 转发(0) |