图片显示

    将图片上传到阿里云服务器时,通过外网无法直接访问图片路径,这时就必须要通过IO流在界面上显示。

  

   在web.xml配置文件中加上:

  <servlet>
        <servlet-name>OSSReader</servlet-name>
        <servlet-class>action.OSSReader</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>OSSReader</servlet-name>
        <url-pattern>/img</url-pattern>                
    </servlet-mapping>


    界面中显示图片已

    <img src="<%=basePath %>/img?fileName=${fileName }" οnlοad="javascript:if (this.width>121) this.width=121;if(this.height>121) this.height=121"/>


   OSSReader:

   public class OSSReader extends HttpServlet {

    private Logger log = LoggerFactory.getLogger(OSSReader.class);

    private static final long serialVersionUID = 4029716041969911408L;

    protected void service(HttpServletRequest request,
            HttpServletResponse response) throws ServletException,
            java.io.IOException {
        InputStream is = null;
        OutputStream os = null;
        try {
            String fileName = request.getParameter("fileName");
            log.debug("fileName=" + fileName);
            if (StringUtils.isBlank(fileName)) {
                fileName = "user_logo/default_logo.png";
            }
            is = downLoadFile(fileName);//从阿里云服务器获取IO流
            if (null != is) {
                response.setContentType("image/jpeg");
                os = response.getOutputStream(); // 创建输出流
                int c = 0;
                while ((c = is.read()) != -1) {
                    os.write(c);
                }
            }
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
    }

   /**
     *  这个方法可以写在阿里云公共方法中
     */

   public static InputStream downLoadFile(String fileName) throws Exception {
        log.info("downLoadFile start");
        InputStream fileStream = null;
        OSSClient client = null;
        try {
            // 创建上传客户端
            client = new OSSClient(endpoint, accessKeyId, accessKeySecret);
            OSSObject data = client.getObject(bucketName, fileName);
            fileStream = data.getObjectContent();
            log.info("get file " + fileName + "   success!");
            log.info("downLoadFile end");
        } catch (Exception e) {
            log.error(e.getMessage(),e);
        } finally {
//            client.shutdown();
        }
        return fileStream;
    }

  
    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        service(request, response);
    }

    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        service(request, response);
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值