zoukankan      html  css  js  c++  java
  • 文件下载

    <%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ taglib prefix="s" uri="/struts-tags"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <s:a action="doDownloadFile">下载文件</s:a>
    <img alt="" src="download/aa.jpeg">
    <img src="<%=request.getContextPath()%>/download/图片.jpeg"
    title="<%=request.getContextPath()%>/download/图片.jpeg"/>
    </body>
    </html>

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">

    <struts>
    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="true" />
    <constant name="struts.ui.theme" value="simple"/>

    <package name="default" namespace="/" extends="struts-default">
    <action name="doDownloadFile" class="action.DownloadAction"
    method="doDownloadFile">
    <result name="success" type="stream">
    <param name="inputName">inputStream</param><!--文件对应的流对象 -->
    <param name="contentDisposition">attachment;
    filename="${fileName}"</param><!--发送给客户端的文件名,需要注意中文乱码问题 -->
    <param name="contentType">application/octet-stream</param>
    <!--文件类型,application/octet-stream是不限制类型 -->
    <param name="bufferSize">1024</param><!--缓冲区大小 -->
    </result>
    </action>
    </package>

    </struts>

    package action;

    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.InputStream;
    import java.io.UnsupportedEncodingException;
    import java.nio.charset.Charset;
    import java.util.Locale;


    import org.apache.catalina.util.URLEncoder;
    import org.apache.struts2.ServletActionContext;
    import org.eclipse.jdt.internal.compiler.ast.ThisReference;

    import com.opensymphony.xwork2.ActionSupport;
    import com.sun.org.apache.regexp.internal.recompile;

    public class DownloadAction extends ActionSupport {
    public String getFileName() throws
    UnsupportedEncodingException {
    //编码的目的是为了解决中文文件名出现乱码的问题
    return java.net.URLEncoder.encode(fileName, "UTF-8");
    //该编码方式在IE6下可能有该问题:文件名长度不能超过16个字符
    //return new String(this.fileName.getBytes("GBK"),
    //"ISO-8859-1");//该编码方式可兼容IE6,但GBK不利于实现国际化

    }
    private String fileName;
    public void setFileName(String fileName) {
    this.fileName = fileName;
    }

    /*
    * 把读取文件的流对象返回,Web服务器会读取流对象中的数据并封装到response中,然后发送到客户端
    */
    public InputStream getInputStream() throws FileNotFoundException, UnsupportedEncodingException{
    InputStream is = null;
    this.fileName="aa.jpeg";
    //把URL路径转化为服务器的本地路径
    String realPath = ServletActionContext
    .getServletContext().getRealPath("/download/"
    +this.fileName);
    System.out.println(realPath);
    is = new FileInputStream(realPath);
    return is;
    }
    public String doDownloadFile(){
    //此处可加入业务,如判断用户是否有下载权限
    return SUCCESS;
    }
    }

  • 相关阅读:
    hdu 3665 Seaside
    hdu 3664 Permutation Counting
    hdu 3661 Assignments
    2017-2018 ACM-ICPC, NEERC, Southern Subregional Contest, qualification stage (Online Mirror, ACM-ICPC Rules, Teams Preferred) E. Packmen
    2017-2018 ACM-ICPC, NEERC, Southern Subregional Contest, qualification stage (Online Mirror, ACM-ICPC Rules, Teams Preferred) I. Noise Level
    2017-2018 ACM-ICPC, NEERC, Southern Subregional Contest, qualification stage (Online Mirror, ACM-ICPC Rules, Teams Preferred) H. Load Testing
    2017-2018 ACM-ICPC, NEERC, Southern Subregional Contest, qualification stage (Online Mirror, ACM-ICPC Rules, Teams Preferred) C C. Sum of Nestings
    Codeforces Round #439 B
    Codeforces Round #439 A
    codeforces 803c
  • 原文地址:https://www.cnblogs.com/qiyc/p/5925067.html
Copyright © 2011-2022 走看看