⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fileaction.java~48~

📁 《struts应用开发完全手册》中的源代码及安装指导
💻 JAVA~48~
字号:
package com.action;

import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForward;
import com.actionForm.FileActionForm;
import org.apache.struts.actions.DispatchAction;
import java.util.Date;
import java.text.*;
import org.apache.struts.upload.FormFile;
import java.io.*;
import java.net.URLEncoder;
import com.dao.*;

public class FileAction extends DispatchAction {
    private Date date = new Date();
    private JDBConnection connection =new JDBConnection();

    public ActionForward upLoadFile(ActionMapping mapping, ActionForm form,
                                    HttpServletRequest request,
                                    HttpServletResponse response) throws
            Exception {
        request.setCharacterEncoding("gb2312");
        FileActionForm fileActionForm = (FileActionForm) form;
        FormFile file = fileActionForm.getFile(); //获取当前的文件
        String dir = servlet.getServletContext().getRealPath("/image");
        String path = upload(dir, file); //实现文件的上传的功能,并且返回上传服务器的路径
        path="image/"+path;
        String fileName = Chinese.toChinese(fileActionForm.getFileName()); //获取文件的名称
        String fileSize = String.valueOf(file.getFileSize());
        String fileDate = DateFormat.getDateInstance().format(date);
        String sql = "insert into tb_file values('" + fileName + "','" +
                     fileSize + "','" + fileDate + "','" + path + "')";
        connection.executeUpdate(sql);
        connection.closeConnection();
        return mapping.findForward("upLoadFileResult");
    }

    public String upload(String dir, FormFile formFile) throws Exception {
        //取欲上传的文件的名字和长度
        String fname = formFile.getFileName();
        //将上传时间加入文件名
        int i = fname.indexOf(".");
        String name = String.valueOf(date.getTime());
        String type = fname.substring(i + 1);
        fname = name + "." + type;
        //创建读取用户上传文件的对象
        InputStream streamIn = formFile.getInputStream();
        //创建把上传数据写到目标文件的对象
        File uploadFile = new File(dir);
        //判断指定路径是否存在,不存在则创建路径
        if (!uploadFile.exists() || uploadFile == null) {
            uploadFile.mkdirs();
        }
        String path = uploadFile.getPath() + "/" + fname;
        OutputStream streamOut = new FileOutputStream(path);
        int bytesRead = 0;
        byte[] buffer = new byte[8192];
        while ((bytesRead = streamIn.read(buffer, 0, 8192)) != -1) {
            streamOut.write(buffer, 0, bytesRead);
        }
        streamOut.close();
        streamIn.close();
        formFile.destroy();
        return fname;
    }


    //实现文件的下载
    public ActionForward downFile(ActionMapping mapping, ActionForm form,
                                  HttpServletRequest request,
                                  HttpServletResponse response) throws
            Exception {
        String path = request.getParameter("path");
        BufferedInputStream bis = null;
        BufferedOutputStream bos = null;
        OutputStream fos = null;
        InputStream fis = null;
        String filepath = servlet.getServletContext().getRealPath("/" + path);
        File uploadFile = new File(filepath);
        fis = new FileInputStream(uploadFile);
        bis = new BufferedInputStream(fis);
        fos = response.getOutputStream();
        bos = new BufferedOutputStream(fos);
        response.setHeader("Content-disposition",
                           "attachment;filename=" +
                           URLEncoder.encode(path, "utf-8"));
        int bytesRead = 0;
        byte[] buffer = new byte[8192];
        while ((bytesRead = bis.read(buffer, 0, 8192)) != -1) {
            bos.write(buffer, 0, bytesRead);
        }
        bos.flush();
        fis.close();
        bis.close();
        fos.close();
        bos.close();

        return null;
    }


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -