码迷,mamicode.com
首页 > Web开发 > 详细

Web下文件上传下载的路径问题

时间:2017-07-25 22:46:36      阅读:251      评论:0      收藏:0      [点我收藏+]

标签:mob   rpo   path   aaaaa   vdi   buffer   api   rdo   mtd   

 

工程结构

技术分享

 

1.生成一个文件到指定文件夹下

//产生一个唯一的名字
this.setFileName(String.valueOf(System.currentTimeMillis()));
String path = ServletActionContext.getServletContext().getRealPath("/template/WordExportTemplate");
//工程下的完整路径名
String filepath = path +"\\" + fileName + ".doc";




//写入文件
Writer  out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filePath,true), "utf-8"), 10240);
out.write("   ");

2.将指定文件下的文件输出到客户端(将上面产生的文件输出)

public InputStream getInputStream() throws Exception {
        create();
        String path = ServletActionContext.getServletContext().getRealPath("/template/WordExportTemplate");
        String filepath = path +"\\" + fileName + ".doc";
        //完整的路径名
        File file = new File(filepath);
        //只用返回一个输入流
        return FileUtils.openInputStream(file);
    }

3.将客户端上传的文件以特定名字存到指定文件夹下:

public String execute() throws Exception{
        
        ServletContext servletContext = ServletActionContext.getServletContext();
//        fileNameFileName表示文件上传时候的名字,也可以自己用UUID定义一个新的名字
        String dir = servletContext.getRealPath("/template/ExcelImportTemplate/"+fileNameFileName);
        System.out.println(dir);
//        文件输出流,写到dir指定的目录与名字
        FileOutputStream outputStream = new FileOutputStream(dir);
//        打开上传的文件的输入流
        FileInputStream inputStream = new FileInputStream(fileName);
        byte[] buffer = new byte[1024];
        int len = 0;
//        从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中.读入缓冲区的字节总数,如果因为已经到达文件末尾而没有更多的数据,则返回 -1。
        while((len = inputStream.read(buffer))!=-1){
//            将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此文件输出流。
            outputStream.write(buffer, 0, len);
        }
        inputStream.close();
        outputStream.close();
        return SUCCESS;
    }

 

4.读取指定文件夹下指定名字的文件:

ServletContext servletContext = ServletActionContext.getServletContext();
//        fileNameFileName表示文件上传时候的名字,也可以自己用UUID定义一个新的名字
String dir = servletContext.getRealPath("/template/ExcelImportTemplate/"+fileNameFileName);
File file = new File(dir);
FileInputStream openInputStream = FileUtils.openInputStream(file);
HSSFWorkbook workbook = new HSSFWorkbook(openInputStream);

 

5. FileInputStream   FileOutputStream是类。可以直接读取与写。

 

构造方法

技术分享

技术分享

例如:

public InputStream getInputStream() throws Exception {
        create();
        String path = ServletActionContext.getServletContext().getRealPath("/template/ExcelExportTemplate");
        String filepath = path +"\\" + fileName + ".xls";
        File file = new File(filepath);
        //只用返回一个输入流
        return FileUtils.openInputStream(file);
    }

 

String path = ServletActionContext.getServletContext().getRealPath("/template");

File tempFile = new File(path, templateName + ".xls");
tempFile.delete();
tempFile.createNewFile();

FileOutputStream stream
= FileUtils.openOutputStream(tempFile);

 

 

1 ServletContext servletContext = ServletActionContext.getServletContext();
2 // fileNameFileName表示文件上传时候的名字,也可以自己用UUID定义一个新的名字
3  String dir = servletContext.getRealPath("/template/ExcelImportTemplate/"+fileName);
4 FileOutputStream outputStream = new FileOutputStream(dir);

 

Web下文件上传下载的路径问题

标签:mob   rpo   path   aaaaa   vdi   buffer   api   rdo   mtd   

原文地址:http://www.cnblogs.com/qlqwjy/p/7236467.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!