java实现文件的预览(一)

2 篇文章 0 订阅
2 篇文章 0 订阅

本次首先实现了jpg、txt等文件的预览,其实文件预览与文件下载的配置几乎一样,就是处理方式有点不同,struts中配置如下

<param name="contentDisposition">attachment;filename="${uploadFileName}"</param>  

这是下载,如果去掉关键字“attachment”,则为预览。预览的文件类型可以使用

<param name="contentType">application/pdf</param>

进行控制,其中application/pdf为预览的文件类型。然而这样设定的话有一个缺点,就是说只能指定一种类型的文件,而不能指定多种文件类型,于是,便把struts的配置使用java在action中实现如下,最后返回为空即可:

action:       

    //转码,解决中文名字问题
uploadFileName = new String(uploadFileName.getBytes("ISO-8859-1"), "UTF8");
String path=ServletActionContext.getServletContext().getRealPath(uploadFileName);
//根据文件夹路径和文件名,创建file文件
File file = new File(path);
long fileSize = file.length();
String fileName = file.getName();  
String suffix1 = fileName.substring(fileName.lastIndexOf(".") + 1); 
//用输入流读取文件
inputStream = new FileInputStream(file);  
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType(UtilTools.returnContentType(suffix1));

response.setHeader("Content-Disposition", "filename=\"" + uploadFileName +"\"");

//缓存

byte[] buffer = new byte[(int) fileSize];

int offset = 0;
int numRead = 0;
while (offset < buffer.length&& (numRead = inputStream.read(buffer, offset, buffer.length - offset)) >= 0) {
            offset += numRead;
        }
  // 确保所有数据均被读取
if (offset != buffer.length) {
    completely read file "  + file.getName());
   } 

//写向前台

response.getOutputStream().write(buffer);
response.getOutputStream().flush();
response.flushBuffer();

response.getOutputStream().close();

将contentType所有类型进行封装,在action中 直接调用即可
static String pdf ="application/pdf";
static String jpg = "text/plain";
static String java ="text/plain";
/*ppt和doc文件不能打开,Chrome没有这个插件*/
static String pptx ="application/x-ppt";
static String doc ="application/msword";
public static String returnContentType(String str){
    String type="";
    if ("pdf".equals(str)){
        type = UtilTools.pdf;
    }else if("jpg".equals(str)){
         type = UtilTools.jpg;
    }else if("java".equals(str)){
         type=UtilTools.java;
    }else if("pptx".equals(str)){
         type=UtilTools.pptx;
    }else if("doc".equals(str)){
        type=UtilTools.doc;
    }
   return type;
  }

 

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值