附件下载
Action
private String fileName;
private InputStream downloadFile;
private final String downloadPath="/knowledgeFiles/";
/***********************************附件操作***************************************/
/**
* 下载附件
*/
public String download()throws Exception{
init();
fileName=URLDecoder.decode(bo.getFileName(),"utf-8");
//获取路径 并转为流 关键的一句
downloadFile=ServletActionContext.getServletContext().getResourceAsStream(downloadPath+fileName);
fileName=new String(fileName.split("_")[1].trim().getBytes(),"ISO8859-1");
return "download";
}
struts配置
<action name="download" class="com.hxhk.cc.action.tss.kw.knowledge.DownLoadAction">
<result name="download" type="stream">
<param name="contentType">application/octet-stream</param>
<!-- excelStream 与对应action中的输入流的名字要一致 -->
<param name="inputName"> downloadFile</param>
<!-- 文件名 与action中fileName一致 -->
<param name="contentDisposition">attachment;filename=" ${fileName}"</param>
</result>
</action>
jsp页面 请求 location方式
<script type="text/javascript">
//下载附件
function downloadAttach(obj,obj1){
location = "KwCodeKnowledgeClasInfo!download.action?bo.fileName="
+encodeUR(encodeURI(obj1));
}
</script>
要注意的是如果请求中有中文字符,若有乱码 可以用 encodeURI(encodeURI())进行处理 后台接收到 用
URLDecoder.decode(bo.getFileName(),"utf-8"); 处理, 请求方式不同 可以根据自己的情况而定
文件上传
private void upLoad() {
if (bo.getUploadFile() != null) {
System.out.println("文件开始上传");
String directory = "/knowledgeFiles";
String targetDirectory = ServletActionContext.getServletContext()
.getRealPath(directory);
// 生成上传的文件对象
try {
for (int i = 0; i < bo.getUploadFile().length; i++) {
String dbFileNameString = UUID.randomUUID().toString()
+ "_" + bo.getUploadFileFileName()[i];
File target = new File(targetDirectory, dbFileNameString);
// 如果文件已经存在,则删除原有文件
if (target.exists()) {
target.delete();
}
// 复制file对象,实现上传
FileUtils.copyFile(bo.getUploadFile()[i], target);
}
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("文件上传成功");
}
}
主要步骤为 获取路径--->生成文件----->判断是否存在:若存在,删除原有文件(也可进行其他操作),不存在,复制file 对象 实现上传
另外文件上传时 jsp页面
<s:form id="addForm"
action="KwCodeKnowledgeClasInfo!addBaseInfo" method="post" enctype="multipart/form-data" theme="simple">
form 表单中 要加入这个。
---如有错误,希望大家帮忙指出