fileUtil文件的上传下载
package com.beisun.mbp.util;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.nio.channels.FileChannel;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.multipart.MultipartFile;
public class FileUtil {
/**
* 上传文件
* @param filePath 上传文件目录
* @param fileName 保存的文件名称
* @param file 文件流类
* @param request 请求
* @throws IOException IO异常
*/
public static void updoadFile(String filePath,String fileName, MultipartFile file,
HttpServletRequest request) throws IOException{
//如果文件夹不存在,则创建文件夹
File dirPath = new File(filePath);
if(!dirPath.exists()){
dirPath.mkdir();
}
File uploadFile = new File(dirPath +"/"+ fileName);
FileCopyUtils.copy(file.getBytes(), uploadFile);
}
/**
* 复制文件
* @param localFileName 原文件地址和文件名
* @param tmpFileName 目标文件地址和文件名
* @throws IOException
*/
public static void copyFile(String localFileName,String tmpFilePath,String tmpFileName) throws IOException{
File localFile = new File(localFileName);
File tmpFile = new File(tmpFilePath,tmpFileName);
FileCopyUtils.copy(localFile, tmpFile);
}
/**
* 删除文件
* @param fileName 文件地址和文件名
* @throws IOException
*/
public static void deleteFile(String fileName) throws IOException{
File localFile = new File(fileName);
localFile.delete();
}
/**
* 下载文件,是向页面输出流,不返回流
* @param filePath 文件服务器存储目录
* @param downloadName 下载文件保存的文件名
* @param fileName 服务器存储文件名
* @param request
* @param response
* @throws UnsupportedEncodingException
*/
@SuppressWarnings("static-access")
public static void downloadFile(String filePath,String downloadName,String fileName,HttpServletRequest request,HttpServletResponse response) throws UnsupportedEncodingException{
fileName = new java.net.URLDecoder().decode(fileName, "utf-8");
downloadName = new java.net.URLDecoder().decode(downloadName, "utf-8");
String path = filePath+fileName;
response.setContentType("application/octet-stream;charset=UTF-8");
response.setHeader("Content-Disposition", "attachment;filename=" + new String((downloadName).getBytes("GBK"), "iso8859-1"));
try {
//以流的形式下载文件
InputStream fis = new BufferedInputStream(new FileInputStream(path));
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
fis.close();
OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
toClient.write(buffer);
toClient.flush();
toClient.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 获取文件的is
* @param filePath 文件服务器存储目录
* @param fileName 服务器存储文件名
* @param request
* @param response
* @throws UnsupportedEncodingException
*/
@SuppressWarnings("static-access")
public static InputStream getFileIS(String filePath,String fileName,HttpServletRequest request,HttpServletResponse response) throws UnsupportedEncodingException{
fileName = new java.net.URLDecoder().decode(fileName, "utf-8");
String path = filePath+fileName;
InputStream fis = null;
try {
//以流的形式下载文件
fis = new BufferedInputStream(new FileInputStream(path));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return fis;
}
/**
* 保存文件
* @param datas 文件数据
* @param pathName 文件路径
*/
public static void saveFile(byte[] datas,String pathName){
File file = new File(pathName);
//寤虹珛杈撳嚭瀛楄妭娴�
FileOutputStream fos;
try {
fos = new FileOutputStream(file);
//鐢‵ileOutputStream 鐨剋rite鏂规硶鍐欏叆瀛楄妭鏁扮粍
fos.write(datas);
//涓轰簡鑺傜渷IO娴佺殑寮�攢锛岄渶瑕佸叧闂�
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 获取文件数据
* @param pathName 文件路径
* @return
*/
public static byte[] getFile(String pathName){
File file = new File(pathName);
byte[] buffer = null;
try {
FileInputStream fis = new FileInputStream(file);
ByteArrayOutputStream bos = new ByteArrayOutputStream(1000);
byte[] b = new byte[1000];
int n;
while ((n = fis.read(b)) != -1) {
bos.write(b, 0, n);
}
fis.close();
bos.close();
buffer = bos.toByteArray();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return buffer;
}
/**
* 计算文件大小文件大小
* @param filePath 文件路径例如:E:\\imgData\\afr\\9211496189393485.jpg
* @return 文件大小 Kb
*/
public static long GetFileSize(String filePath){
long fileSize=0l;
FileChannel fc= null;
try {
File f= new File(filePath);
if (f.exists() && f.isFile()){
FileInputStream fis= new FileInputStream(f);
fc= fis.getChannel();
fileSize=fc.size()/1024;
//logger.info(fileSize);
}else{
//logger.info("file doesn't exist or is not a file");
}
} catch (FileNotFoundException e) {
//logger.error(e);
} catch (IOException e) {
//logger.error(e);
} finally {
if (null!=fc){
try{
fc.close();
}catch(IOException e){
//logger.error(e);
}
}
}
return fileSize;
}
/**
* getImage 根据图片的路径获取图片给前台
* @author sunjianbo
* @time 2016年8月25日上午10:41:37
* @param response
* @param request
* @param filePath
* @throws Exception
*/
//@RequestMapping(value = "/getImage.do", method = RequestMethod.GET)
public void getImage(HttpServletResponse response, HttpServletRequest request,String filePath)
throws Exception {
BufferedOutputStream bos = null;
try {
bos = new BufferedOutputStream(response.getOutputStream());
byte[] data = getFile(filePath);
bos.write(data);
bos.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (bos != null)
bos.close();
}
}
}
fileUtil文件的上传下载的更多相关文章
- Spring实现文件的上传下载
背景:之前一直做的是数据库的增删改查工作,对于文件的上传下载比较排斥,今天研究了下具体的实现,发现其实是很简单.此处不仅要实现单文件的上传,还要实现多文件的上传. 单文件的下载知道了,多文件的下载呢? ...
- 在Window的IIS中创建FTP的Site并用C#进行文件的上传下载
文件传输协议 (FTP) 是一个标准协议,可用来通过 Internet 将文件从一台计算机移到另一台计算机. 这些文件存储在运行 FTP 服务器软件的服务器计算机上. 然后,远程计算机可以使用 FTP ...
- 创建FTP的Site并用C#进行文件的上传下载
创建FTP的Site并用C#进行文件的上传下载 文件传输协议 (FTP) 是一个标准协议,可用来通过 Internet 将文件从一台计算机移到另一台计算机. 这些文件存储在运行 FTP 服务器软件的服 ...
- linux链接及文件互相上传下载
若排版紊乱可查看我的个人博客原文地址 基本操作 本篇博客主要介绍如何去链接远程的linux主机及如何实现本地与远程主机之间文件的上传下载操作,下面的linux系统是CentOS6.6 链接远程linu ...
- SocketIo+SpringMvc实现文件的上传下载
SocketIo+SpringMvc实现文件的上传下载 socketIo不仅可以用来做聊天工具,也可以实现局域网(当然你如果有外网也可用外网)内实现文件的上传和下载,下面是代码的效果演示: GIT地址 ...
- JAVAWEB之文件的上传下载
文件上传下载 文件上传: 本篇文章使用的文件上传的例子使用的都是原生技术,servelt+jdbc+fileupload插件,这也是笔者的习惯,当接触到某些从未接触过的东西时,总是喜欢用最原始的东西将 ...
- SSM框架之中如何进行文件的上传下载
SSM框架的整合请看我之前的博客:http://www.cnblogs.com/1314wamm/p/6834266.html 现在我们先看如何编写文件的上传下载:你先看你的pom.xml中是否有文件 ...
- python使用ftplib模块实现FTP文件的上传下载
python已经默认安装了ftplib模块,用其中的FTP类可以实现FTP文件的上传下载 FTP文件上传下载 # coding:utf8 from ftplib import FTP def uplo ...
- php文件夹上传下载控件分享
用过浏览器的开发人员都对大文件上传与下载比较困扰,之前遇到了一个php文件夹上传下载的问题,无奈之下自己开发了一套文件上传控件,在这里分享一下.希望能对你有所帮助. 以下是实例的部分脚本文件 这里我先 ...
随机推荐
- Entity FrameWork Code First无法生成数据库 解决办法
我是控制台应用程序,没有connectionStrings,试了几个方法也都不可以. 这是别人的博客用其他方法. http://www.cnblogs.com/Gyoung/archive/2013/ ...
- jQuery UI 自定义样式的日历控件
在线演示 本地下载
- ResulsetHandler九个实现类
ResulsetHandler九个实现类 ArrayHandler, 将结果集中第一条记录封装到Object[],数组中的每一个元素就是记录中的字段值. ArrayListHandler, 将结果集中 ...
- nginx反向代理服务器端口问题
nginx可以很方便的配置成反向代理服务器 server { listen 80; server_name bothlog.com; location / { proxy_set_header H ...
- 谷歌SEO老域名注册完全攻略
老域名有优势,不管在百度和谷歌都是一样的. 我们查看搜索结果就能发现,谷歌里面很多排前十的网站都是N年前的,一零年以后的算是比较新的,很多产品网站域名是零几年,甚至很多排名更好的域名是九几年的. 谷歌 ...
- CocoaPods学习系列1——安装和常规使用
CocoaPods是一个Github上的开源项目,目前已经成为iOS开发过程中标准的依赖库管理器,提供了一种对第三方类库简单优雅的集成和管理方案. 其工作原理,是将第三方类库统一管理到一个名为Pods ...
- 使用Entity Framework时遇到的各种问题总结
在这里记录一下之前使用Entity Framework(4.3.1版本)遇到的问题. 更新没有设置主键的表 在默认情况下,EF不能对一个没有主键的表进行更新.插入和删除的动作.用xml方式查看edmx ...
- DP问题如何确定状态
DP问题如何确定状态 一.dp实质 动态规划的实质就是通过小规模的同类型的问题来解决题目的问题. 所以有一个dp数组来储存所有小规模问题的解. 所以确定状态也就是缩小问题规模. 我们求解问题的一般规律 ...
- 【Python那些事儿之十】range()和xrange()
by Harrison Feng in Python 无论是range()还是xrange()都是Python里的内置函数.这个两个内置函数最常用在for循环中.例如: >>> fo ...
- Apache Tomcat 服务因 0 (0x0) 服务性错误而停止
操作系统:Windows Server 2003 SP2/win7 64JDK 版本为 6.0 update 6 安装在 D:\Java 目录下Tomcat 版本为 6.0.16 安装 D:\Tomc ...