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

文件上传下载删除

时间:2016-12-19 18:42:18      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:else   sof   cte   2.3   att   ati   --   文件   相对路径   

<form action="newFile" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="上传">
</form>
<a href="downFile?filename=${filename}">下载</a><br/><br/><br/>
<a href="deleteFile?filename=${filename}">删除</a><br/><br/><br/>
<?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>
    <package name="newFilesAction" namespace="/" extends="struts-default">
    
        <action name="newFile" class="newFilesAction" method="newFile">
            <result name="success">NewFile.jsp</result>
        </action>
        
        <action name="downFile" class="newFilesAction" method="downFile">
            <result name="success" type="stream">  
               <param name="contentType">application/octet-stream;charset=ISO8859-1</param>
            <!-- inputName 流对象名 —— 比如这里写inputStream,它就会自动去找Action中的getInputStream方法。 -->
            <param name="inputName">inputStream</param>
            <!-- contentDisposition 使用经过转码的文件名作为下载文件名 —— 默认格式是attachment;filename="${fileName}",将调用该Action中的getFileName方法。 -->
            <param name="contentDisposition">attachment;filename=${filename}</param>
            <!-- bufferSize 下载文件的缓冲大小 -->
            <param name="bufferSize">4096</param>
            </result>
            <result name="error">NewFile.jsp</result>
         </action>
         
         <action name="deleteFile" class="newFilesAction" method="deleteFile">
            <result name="success">NewFile.jsp</result>
        </action>
    </package>
</struts>
package com.cpsec.tang.chemical.action;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.UUID;
import org.apache.struts2.ServletActionContext;
import org.springframework.stereotype.Controller;
import com.opensymphony.xwork2.ActionSupport;

@Controller("newFilesAction")
public class NewFileAction extends ActionSupport {
    private static final long serialVersionUID = 4765816351070218273L;
    private File file;// 文件
    private String fileFileName;// 文件名称
    private String fileContentType; // 文件类型
    private String filename;
    private InputStream inputStream;
    private String webpath;

    public String newFile() {
        System.out.println(file);
        System.out.println(fileFileName);
        String[] Name = this.getFileFileName().split("\\.");
        String fileExt = Name[Name.length - 1];// 后缀名
        String UUIDValue = UUID.randomUUID().toString();// 随机字符串(文件名)
        StringBuffer path = new StringBuffer("/");// 随机路径
        for (int n = 0; n < UUIDValue.length(); n++) {
            char c = UUIDValue.charAt(n);
            path.append(c + "/");
        }
        System.out.println(path);
        webpath="files" + path;//相对路径
        System.out.println("webpath="+webpath);
        
        //存放文件的绝对路径(不包括文件)
        File dir = new File(ServletActionContext.getServletContext().getRealPath(webpath));
        // 判断文件是否上传,如果上传的话将会创建该目录
        if (!dir.exists()) {
            dir.mkdirs(); // 创建该目录
        }

        fileFileName = UUIDValue + "." + fileExt;
        filename = fileFileName;
        System.out.println("fileName" + filename);
        //存放文件的相对路径(包括文件),此路径存储在数据库中
        String filepath=webpath+"\\"+fileFileName;
        // 第一种文件上传的方法
        // 声明文件输入流,为输入流指定文件路径
        // 获取输出流,获取文件的文件地址及名称
        FileInputStream in = null;
        FileOutputStream out = null;
        try {
            in = new FileInputStream(file);
            out = new FileOutputStream(dir + "\\" + fileFileName);
            byte[] b = new byte[1024 * 1024];// 每次写入的大小
            int i = 0;
            while ((i = in.read(b)) > 0) {
                out.write(b, 0, i);
            }
            in.close();
            out.close();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
        }

        return SUCCESS;
    }

    //下载文件
    public String downFile() {
        File f=new File(ServletActionContext.getServletContext().getRealPath(webpath)+"\\"+filename);
        if(f.exists()){
            System.out.println(f.toString());
            inputStream = ServletActionContext.getServletContext().getResourceAsStream(webpath + "\\" + filename);
        System.out.println(inputStream);
            return SUCCESS;
        }else{
            return ERROR;
        }
    }
    
    
    //删除文件
    public String deleteFile() {
        String lujing=ServletActionContext.getServletContext().getRealPath(webpath)+"\\"+filename;
        System.out.println(lujing);
        File f=new File(lujing);
        if (f.exists()){
            System.out.println(f);
            f.delete();
        }
        return SUCCESS;
    }

    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 getFileContentType() {
        return fileContentType;
    }

    public void setFileContentType(String fileContentType) {
        this.fileContentType = fileContentType;
    }

    public String getFilename() {
        return filename;
    }

    public void setFilename(String filename) {
        this.filename = filename;
    }

    public InputStream getInputStream() {
        return inputStream;
    }

    public void setInputStream(InputStream inputStream) {
        this.inputStream = inputStream;
    }

    public String getWebpath() {
        return webpath;
    }

    public void setWebpath(String webpath) {
        this.webpath = webpath;
    }

}

 

文件上传下载删除

标签:else   sof   cte   2.3   att   ati   --   文件   相对路径   

原文地址:http://www.cnblogs.com/bunuo/p/6198402.html

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