现在的位置: 首页 > 综合 > 正文

extjs4 struts2 文件上传

2017年11月20日 ⁄ 综合 ⁄ 共 2319字 ⁄ 字号 评论关闭

在form中添加文件上传控件。其中name : 'file'配置项决定了在action中使用private File file来接收这个上传文件。

{

xtype : 'filefield',
x : 50,
y : 450,
name : 'file',
itemId : 'docAdd',
buttonText:'上传',
width : 390,
fieldLabel : 'TCL检测'

}

form调用自带的submit方法提交表单时不需要将表单中各输入控件的值传进param去,会自动封装好提交到action,故该文件上传在js中没什么好说的。

action中的保存方法,其中我由于上传的是图片,所以把它转成base64编码存储了:

JSONArray array = JSONArray.fromObject(reactants);
List<Reactant> reactant = new ArrayList<Reactant>(); // 传递到数据库修改的参数
for (int i = 0; i < array.size(); i++) {
JSONObject jsonObject = array.getJSONObject(i);
reactant.add((Reactant) JSONObject.toBean(jsonObject,
Reactant.class));
}
try {
if (file != null) {
String base64=CreatImage.getPicBASE64(file);
//System.out.println(base64);
// String path = DocAction.class.getClassLoader().getResource("")
// .toString();
// path = path.substring(0, path.indexOf("WEB-INF"))
// .replace("file:/", "").replace("%20", " ");
String fileType = lenDetail.getResultImage();//根据文件全路径获取文件
fileType = fileType.substring(fileType.indexOf(".")+1,
fileType.length());
base64="data:image/"+fileType+";base64,"+base64;
// System.out.println(base64);
// String fileName = file.getName();
// fileName = fileName.substring(0, fileName.indexOf("."));
// lenDetail.setResultImage("wk/lab/labImages/" + fileName
// + fileType);
lenDetail.setResultImage(base64);
// lenDetail.setLenDetailId(1);//
if (lenDetailService.addLenDetail(lenDetail)
&& lenDetailService.addLenReactant(reactant, lenDetail)) {
// File outFile = new File(path + lenDetail.getResultImage());
// UploadFile uploadFile = new UploadFile();
// if (uploadFile.upload(file, outFile)) {
// success = true;
// msg = "保存成功!";
// } else {
// success = true;
// msg = "保存成功,但附件上传失败!";
// }
imageUrlAfterSave = lenDetail.getResultImage();
success = true;
msg = "保存成功!";
} else {
success = false;
msg = "保存失败!";
}
}
if (file == null) {
// lenDetail.setLenDetailId(1);//
if (lenDetailService.addLenDetail(lenDetail)
&& lenDetailService.addLenReactant(reactant, lenDetail)) {
System.out.println(lenDetail);
imageUrlAfterSave = lenDetail.getResultImage();
success = true;
msg = "保存成功!";
} else {
success = false;
msg = "保存失败!";
}
}
} catch (Exception e) {
e.printStackTrace();
success = false;
msg = "未知错误,添加失败!";
}
return SUCCESS;

struts2的action配置文件

<action name="saveLenDetail" class="wk.len.actions.lab.LabNoteReactantAction"
method="saveLenDetail">
<result type="json">
<param name="contentType">text/html</param>
<param name="includeProperties">success,imageUrlAfterSave,msg</param>
</result>
</action>

要特别注意<param name="contentType">text/html</param>这行,否则会出错的

抱歉!评论已关闭.