JAVA 流下载文件 360下载是ACTION的原因分析

 BufferedInputStream bis = null;
         BufferedOutputStream bos = null;
         OutputStream fos = null;
         InputStream fis = null;
         String  filepath=path;//本地绝对路径
         File uploadFile = new File(filepath);
         fis = new FileInputStream(uploadFile);
         bis = new BufferedInputStream(fis);
         reponse.reset();
         fos = reponse.getOutputStream();
         bos = new BufferedOutputStream(fos);
		         reponse.setContentType("text/plain");
		    reponse.setHeader("Content-disposition","attachment; filename="+uploadFile.getName());
		    int bytesRead = 0;
		          //用输入流进行先读,然后用输出流去写,唯一不同的是我用的是缓冲输入输出流
		        //  byte[] buffer = new byte[8192];
		         // while ((bytesRead = bis.read(buffer, 0, 8192)) != -1) {
		         //     bos.write(buffer, 0, bytesRead);
		         // }         
		          FileCopyUtils.copy(fis, bos);//spring工具类直接流拷贝
		          bos.flush();
		          fis.close();
		          bis.close();
		          fos.close();
		          bos.close();  

这个功能IE,firef是好的 但是在360下载时候 我分析是直接下载了ACTION
直接输出流到360,360有个下载管理工具来识别这个请求的文件名之类的信息.然后需要点击确定后(此后会再次请求一次刚才的地址),才会具体把这个输出的东西保存为具体文件.这个时候就把action下载出来了(可能这个地方说ACTION有些歧义)
这里请求了两次那个文件.
把360下载换成IE(工具-》下载器-》设置-》默认下载工具为IE).这个问题就解决了


你可能感兴趣的:(action)