文件的上传,下载,多个文件生成压缩包,文件的删除

来源:互联网 发布:php基础知识视频 编辑:程序博客网 时间:2024/05/17 05:10
文件下载


/**
     * 文件上传
     */
@RequestMapping("registerEmployee")
public String registerEmployee(String ename,String hiredate,MultipartFile photo,HttpServletRequest req) throws                                          IllegalStateException, IOException{
              //获取文件名
String file_name=photo.getOriginalFilename();
//获取文件后缀名
String pre_file=FilenameUtils.getExtension(file_name);
//随机生成名字
String base_name=UUID.randomUUID().toString();
file_name=base_name+"."+pre_file;
if(!photo.isEmpty()){
photo.transferTo(new File("d:\\pingbao\\"+file_name));
}
  }


/**
     * 生成下载文件  
     * filename为要下载的文件名
     */
    public static void generateDownloadFile(String filename,HttpServletRequest request,HttpServletResponse response){
       File file = new File(filename); 
       try {
  InputStream ins = new FileInputStream(file);
  BufferedInputStream bins = new BufferedInputStream(ins); 
  OutputStream outs = response.getOutputStream(); 
  BufferedOutputStream bouts = new BufferedOutputStream(outs);
  response.setContentType("application/x-download"); 
  response.setHeader("Content-disposition","attachment;filename="+URLEncoder.encode(file.getName(), "UTF-8")); 
 
  int bytesRead = 0;
  byte[] buffer = new byte[8192]; // 开始向网络传输文件流 
  while ((bytesRead =bins.read(buffer, 0, 8192)) != -1) { 
    bouts.write(buffer, 0, bytesRead); 
  }
  bouts.flush(); 
  ins.close(); 
  bins.close();
  bouts.close();
}catch (IOException e) {
e.printStackTrace();
    }


多个文件打包
public static String multipleFilesToZip(String[] filename,String path){
// 随机生成名字
String base_name = UUID.randomUUID().toString();
String fileZip = base_name + ".zip"; // 拼接zip文件
String filepath = path+"\\" + fileZip;
File files[] = new File[filename.length];
for (int i = 0; i < filename.length; i++) {
files[i] = new File(filename[i]);
}
// 创建压缩文件
try {
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filepath));
ZipOutputStream zos = new ZipOutputStream(bos);
ZipEntry ze = null;
for (int i = 0; i < files.length; i++) {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(files[i]));
ze = new ZipEntry(files[i].getName());
zos.putNextEntry(ze);
int s = -1;
while ((s = bis.read()) != -1) {
zos.write(s);

}
bis.close();
}
zos.flush();
zos.close();
} catch (IOException e) {
e.printStackTrace();
}
return filepath;
}

文件删除(多文件)

/**
     * 递归删除目录下的所有文件及子目录下所有文件
     * @param dir 将要删除的文件目录
     */
    public static boolean deleteDir(File dir) {
        if (dir.isDirectory()) {
            String[] children = dir.list();
            //递归删除目录中的子目录下
            for (int i=0; i<children.length; i++) {
                boolean success = deleteDir(new File(dir, children[i]));
                if (!success) {
                    return false;
                }
            }
        }
        // 目录此时为空,可以删除
        return dir.delete();
    }
/**
     * 生成下载文件  
     * filename为要下载的文件名
     */
0 0
原创粉丝点击