利用filter使用外部文件存放图片。

本文介绍了一个简单的文件下载Servlet实现方式,通过HTTP GET和POST请求处理文件下载操作,并展示了如何使用Java IO流完成文件读取及响应给客户端的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

声明filter

 <servlet-mapping>  
     <servlet-name>dl-servlet</servlet-name>  
     <url-pattern>/dl/*</url-pattern>  
 </servlet-mapping>  
    <servlet>  
     <servlet-name>dl-servlet</servlet-name>  
    <servlet-class>  
         com.ssjc.manage.xbase.core.servlet.FileDLServlet  
    </servlet-class>  
   </servlet>  
 
   package com.ssjc.manage.xbase.core.servlet;  
     
   import java.io.File;  
   import java.io.FileInputStream;  
   import java.io.IOException;  
   import java.io.InputStream;  
     
   import javax.servlet.ServletException;  
   import javax.servlet.http.HttpServletRequest;  
  import javax.servlet.http.HttpServletResponse;  
    
  import org.apache.log4j.lf5.util.StreamUtils;  
    
   /** 
    * Servlet implementation class for Servlet: FileDLServlet 
    *  
    * @author cong_px 
    * @Date 2008/10/06 
    * @Version 1.0.0 
    */  
  public class FileDLServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {  
     static final long serialVersionUID = 1L;  
       
      /*  
       * @see javax.servlet.http.HttpServlet#HttpServlet() 
       */  
      public FileDLServlet() {  
          super();  
      }         
        
      /*  
       * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 
       */  
      protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
          doProcess(request, response);  
      }     
        
      /*  
       * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
       */  
      protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
          doProcess(request, response);  
      }          
        
      /** 
       *  
       * @param request 
       * @param response 
       * @throws ServletException 
       * @throws IOException 
       */  
      protected void doProcess(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
            
          String binaryObjectId = request.getRequestURI();  
          int idx = binaryObjectId.lastIndexOf('/');  
          binaryObjectId = binaryObjectId.substring(idx+1);  
          idx = binaryObjectId.indexOf('.');  
    
          //后缀名不存在时导致的错误  
          if(idx == -1){  
              response.sendError(404);  
              return;  
          }  
            
          // 这里可以“D:/uploadImages/”可以从配置文件中读取  
          File file = new File("D:/uploadImages/" + binaryObjectId);  
          if(file == null){  
              response.sendError(404);  
          } else {  
              InputStream in = null;  
              try {  
                  in = new FileInputStream(file);  
                  StreamUtils.copy(in, response.getOutputStream(), 2048);  
              } finally {  
                  if(in!=null){  
                      try {in.close();} catch (Exception e) {}  
                      in = null;  
                  }  
              }  
          }  
      }  
  }  
 
<img src="<%= context %>/dl/<s:property value="product2.picture.fileId"/>" width="90" height="68" alt=.....  
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值