java SSH第一章学习内容(Struts2文件上传及文件下载)

文件上传

1.使用流进行文件上传,在JSP页面使用S标签传给action

<s:form action="upload6.action" enctype="multipart/form-data" method="post">
       <s:textfield name="title" label="标题"/><br>
       <s:file name="upload6" label="选择文件"/><br>
       <s:submit name="submit" value="上传文件"/>
   </s:form>

2.继承ActionSupport重写execute()方法,需要创建一个File属性(名字要跟jsp跳转的acation名字一样)和一个上传文件的名字,两个属性要给于get+set方法

 

public class Upload6Action extends ActionSupport {
    private File upload6;//要跟JSP的action名字一样
    private String upload6FileName;//获取文件名字
    
    public File getUpload6() {
        return upload6;
    }

    public void setUpload6(File upload6) {
        this.upload6 = upload6;
    }

    public String getUpload6FileName() {
        return upload6FileName;
    }

    public void setUpload6FileName(String upload6FileName) {
        this.upload6FileName = upload6FileName;
    }

    @Override
    public String execute() throws Exception {
        //获得jsp中传入的文件
        FileInputStream is = new FileInputStream(upload6);
        //需要上传的路径
        File file = new File("D://apache-tomcat-7.0.90/webapps/8.28shangchuan/WEB-INF/"+upload6FileName);
        //创建一个空白file
        file.createNewFile();
        //构造输出流写入到file文档
        FileOutputStream os = new FileOutputStream(file);
        //创建byte[]数据存储单位
        byte[] bb = new byte[1024];
        //通过while循环判断输入流!=-1,让输出流写入byte中
        while (is.read(bb)!=-1) {
            os.write(bb);
            os.flush();    
        }
        if (os != null) {
            os.close();
        }
        if (is != null) {
            is.close();
        }
        return SUCCESS;
    }
}


文件下载

1.使用流进行文件下载,在JSP页面使用S标签传给action

<s:form action="upload6.action" enctype="multipart/form-data" method="post">
       <s:textfield name="title" label="标题"/><br>
     <s:a>下载百度图片</s:a>
       <s:submit name="submit" value="下载图片"/>
   </s:form>

2.继承ActionSupport重写execute()方法
public class Upload6Action extends ActionSupport{
    @Override
    public String execute() throws Exception {
        //下载的路径,可以找网上的,也可以设置自己本机的内容
        URL url = new URL("https://image.baidu.com/search/detail?ct=50331" +
                "6480&z=0&ipn=d&word=%E7%9C%9F%E9%A6%99&step_word=&hs=0&pn" +
                "=12&spn=0&di=32127687270&pi=0&rn=1&tn=baiduimagedetail&is=0" +
                "%2C0&istype=0&ie=utf-8&oe=utf-8&in=&cl=2&lm=-1&st=undefined&" +
                "cs=208342519%2C2537349107&os=1200942077%2C3336823907&simid=" +
                "156522404%2C2792643572&adpicid=0&lpn=0&ln=1266&fr=&fmq=15354" +
                "48500425_R&fm=&ic=undefined&s=undefined&se=&sme=&tab=0&width=" +
                "undefined&height=undefined&face=undefined&ist=&jit=&cg=&bdtype=" +
                "11&oriquery=&objurl=http%3A%2F%2Fpic4.zhimg.com%2Fv2-7bbf5a93511d7114" +
                "e3818d321a32b77b_r.jpg&fromurl=ippr_z2C%24qAzdH3FAzdH3Fooo_z%26e3Bziti7_z%2" +
                "6e3Bv54AzdH3Fq7jfpt5gAzdH3Fdbcd0nnccAzdH3Fwgfoj6AzdH3F90bll8n0a&gsm=0&rpstart=0&rpnum=0&islist=&querylist=");
        //通过url.openConnection获取到HttpURLConnection对象
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        //通过HttpURLConnection获取输入流
        InputStream is = conn.getInputStream();
        //构造空的下载路径并创建
        File file = new File("D:\\百度图片.png");
        file.createNewFile();
        //构造输出流并写入到文档中
        OutputStream os = new FileOutputStream(file);
        //构造字节数组读取信息
        byte[] bb = new byte[1024];
        //判断条件当输入流没值(等于负一的时候),就让输出流停止工作
        while (is.read(bb) != -1) {
            os.write(bb);
            os.flush();    
        }
        if (os != null) {
            os.close();
        }
        if (is != null) {
            is.close();
        }
        return SUCCESS;
    }
}


注:多个文件可以JSP中可以使用相同的提交数据名,属性要用数组[]接收即可,其他基本一样

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值