上传和下载

下载代码大致如下

<%@ 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";
  }
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值