下载代码大致如下
<%@ page pageEncoding="UTF-8"%><%
request.setCharacterEncoding( "UTF-8");
String id = request.getParameter("noticeId");
String fileNameTemp = request.getParameter("fileName");
String theFileName= java.net.URLDecoder.decode(java.net.URLDecoder.decode(fileNameTemp,"UTF-8"),"UTF-8");
System.out.println(id +"--下载--"+ theFileName +"----" );
//theFileName=java.net.URLEncoder.encode(request.getParameter("fileName"),"utf-8");
try{
//String tempStr=theFileName;
// byte[] temp_t=tempStr.getBytes( "ISO8859_1");
// String temp=new String(temp_t,"gbk");
// theFileName = temp;
// 得到文件名字和路径
String rootPath = System.getenv("NMS_COLLTER_DATA");
System.out.println(id +"--下载--"+ theFileName +"----" + rootPath);
if(rootPath==null||"".equals(rootPath)||"null".equals(rootPath)){}
String targetDirectory = rootPath+ "/" +theFileName ;
// 设置响应头和下载保存的文件名
response.setContentType("APPLICATION/OCTET-STREAM");
response.setHeader("Content-disposition","attachment;filename="+new String(theFileName.getBytes("gb2312"),"iso8859-1"));
// 打开指定文 件的流信息
java.io.FileInputStream fileInputStream = new java.io.FileInputStream(targetDirectory);
//new java.io.FileInputStream(filepath + filename);
// 写出流信息
int i;
while ((i=fileInputStream.read()) != -1) {
//out.write(i);
response.getOutputStream().write(i);
}
fileInputStream.close();
//out.close();
response.getOutputStream().close();
}catch(Exception e){
System.out.println("下载公告附件出错");
e.printStackTrace();
}finally{
// fileInputStream.close();
response.getOutputStream().close();
// out.print("<br/>下载公告附件出错!文件找不到!");
// out.close();
}
%>
上传代码大致如下
public class FileUpLoadAction extends ActionSupport
{
private static final long serialVersionUID = 1L;
private String jsonStr;
private File file;
private String fileFileName;
public String uploadFile()
throws Exception
{
String result = "";
try {
System.out.println("进入方法");
System.out.println("fileName:" + this.fileFileName);
System.out.println("file" + this.file.getName());
String rootPath = System.getenv("NMS_COLLTER_DATA");
if ((rootPath == null) || ("".equals(rootPath)) || ("null".equals(rootPath))) {
result = "{success:false,message:'环境变量<NMS_COLLTER_DATA>没有定义'}";
System.out.println("找不到路径");
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("text/html;charset=UTF-8");
PrintWriter pw = response.getWriter();
pw.write(result);
pw.flush();
pw.close();
this.jsonStr = result;
return "success";
}
String targetDirectory = rootPath + "/";
System.out.println("targetDirectory:" + targetDirectory);
File uploadPath = new File(targetDirectory);
if (!(uploadPath.exists()))
uploadPath.mkdirs();
String targetFileName = generateFileName(this.fileFileName);
System.out.println("targetFileName:" + targetFileName);
File target = new File(targetDirectory, targetFileName);
InputStream in = new BufferedInputStream(new FileInputStream(this.file));
OutputStream ous = new BufferedOutputStream(new FileOutputStream(target));
System.out.println("复制文件开始");
Streams.copy(in, ous, true);
System.out.println("复制文件结束");
DecimalFormat digits = new DecimalFormat("###.00");
double len = target.length() / 1048576.0D;
result = "{success:true,message:'完成:" + digits.format(len) + "MB',realFileName:'" + targetFileName + "'}";
}
catch (IOException io) {
result = "{success:false,message:'文件长度过大',realFileName:'无文件'}";
}
catch (Exception e) {
e.printStackTrace();
result = "{success:false,message:'文件上传失败',realFileName:'无文件'}";
}
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("text/html;charset=UTF-8");
PrintWriter pw = response.getWriter();
pw.write(result);
pw.flush();
pw.close();
this.jsonStr = result;
return "success";
}