博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java中的上传下载----ajaxFileUpload+struts2
阅读量:6817 次
发布时间:2019-06-26

本文共 4947 字,大约阅读时间需要 16 分钟。

文件上传在项目中应该是非常常见的,而且很多时候,上传文件都只是一个小页面中的一个功能,要求在实现文件上传的前提下不刷新页面。而一般情况下将客户端的文件包装成网络地址传递到服务器端然后通过流来进行文件传输的任务都是使用浏览器来帮我们完成的,一般情况下,我们的form表单提交,我们自己可以手动拿到表单的值,然后封装起来,发送ajax请求,为了安全着想,js是不允许访问客户端的文件系统的,所以而文件传输需要浏览器来完成,ajax上传其实是在页面中一小块区域加一个iframe对象然后引用到另一个页面,提交引用的那个页面。

1、ajaxFileUpload文件下载地址  

2、

jsp页面 (<input type="file"/>默认的样式很丑,调整样式有点小麻烦)

我没有加表单,ajax提交表单应该没什么问题,方法很多网上百度

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>      My JSP 'index.jsp' starting page                                                    

3、action

package com.demo.action;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import javax.servlet.http.HttpServletResponse;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;@SuppressWarnings("serial")public class FileAction extends ActionSupport {    private File file;    private String fileFileName;    private String fileFileContentType;    private String message = "0"; // 0格式错误 1成功(文件路径)  2失败    private String filePath;    public String getFilePath() {        return filePath;    }    public void setFilePath(String filePath) {        this.filePath = filePath;    }    public String getMessage() {        return message;    }    public void setMessage(String message) {        this.message = message;    }    public File getFile() {        return file;    }    public void setFile(File file) {        this.file = file;    }    public String getFileFileName() {        return fileFileName;    }    public void setFileFileName(String fileFileName) {        this.fileFileName = fileFileName;    }    public String getFileFileContentType() {        return fileFileContentType;    }    public void setFileFileContentType(String fileFileContentType) {        this.fileFileContentType = fileFileContentType;    }    @SuppressWarnings("deprecation")    @Override    public String execute() throws Exception {        String path = ServletActionContext.getRequest().getRealPath("/upload");        File file = new File(path); // 判断文件夹是否存在,如果不存在则创建文件夹        if (!file.exists()) {            file.mkdir();        }        String[] fileSuffix = new String[] { ".exe" };// 禁止文件        try {            File f = this.getFile();            // 判断文件格式            for (int i = 0; i < fileSuffix.length; i++) {                if (fileFileName.endsWith(fileSuffix[i])) {                    message = "0";                    return ERROR;                }            }            FileInputStream inputStream = new FileInputStream(f);            FileOutputStream outputStream = new FileOutputStream(path + "\\"                    + fileFileName);            byte[] buf = new byte[1024];            int length = 0;            while ((length = inputStream.read(buf)) != -1) {                outputStream.write(buf, 0, length);            }            inputStream.close();            outputStream.flush();            message = path + "\\" + this.getFileFileName();        } catch (Exception e) {            e.printStackTrace();            message = "2";        }        return SUCCESS;    }    public String download() {        String path = filePath;        HttpServletResponse response = ServletActionContext.getResponse();        try {            // path是指欲下载的文件的路径。            File file = new File(path);            // 取得文件名。            String filename = file.getName();            // 取得文件的后缀名。            String ext = filename.substring(filename.lastIndexOf(".") + 1)                    .toUpperCase();            // 以流的形式下载文件。            InputStream fis = new BufferedInputStream(new FileInputStream(path));            byte[] buffer = new byte[fis.available()];            fis.read(buffer);            fis.close();            // 清空response            response.reset();            // 设置response的Header            String filenameString = new String(filename.getBytes("gbk"),                    "iso-8859-1");            response.addHeader("Content-Disposition", "attachment;filename="                    + filenameString);            response.addHeader("Content-Length", "" + file.length());            OutputStream toClient = new BufferedOutputStream(response                    .getOutputStream());            response.setContentType("application/octet-stream");            toClient.write(buffer);            toClient.flush();            toClient.close();        } catch (IOException ex) {            ex.printStackTrace();        }        return null;    }}

4、struts2配置

text/html
text/html

 

为生活,一路向前

转载地址:http://nuszl.baihongyu.com/

你可能感兴趣的文章
由.NET说到WCF(未完成)
查看>>
用motion实现家庭视频监控
查看>>
帝国cms缩略图:网站不同地方生成不同的缩略图
查看>>
python Django Ajax基础
查看>>
aop point-cut表达式
查看>>
easyui的 getSelections 与 getSelected 对比区别
查看>>
后缀数组模板 UOJ#35. 后缀排序
查看>>
[转]DirectX Rendering Pipeline渲染管线图
查看>>
ImageMaigck不支持中文路径的问题
查看>>
俄罗斯方块
查看>>
ZOJ 2061 - Buy the Ticket
查看>>
27.将 VMware 服务器上的虚拟机备份到 Azure(上)
查看>>
【cocos2d-x从c++到js】22:使用非侵入方式扩展UI系统接口的举例
查看>>
Hibernate查询效率对比
查看>>
DROP TABLE 恢复【一】
查看>>
Message Flood(map)
查看>>
百度地图计算两坐标点之间距离计算
查看>>
getHibernateTemplate()
查看>>
【SPOJ】10628. Count on a tree(lca+主席树+dfs序)
查看>>
Uva10290 - {Sum+=i++} to Reach N
查看>>