java 文件保存到本地

时间:2022-10-31 23:47:43
private void savePic(InputStream inputStream, String fileName) {

OutputStream os
= null;
try {
String path
= "D:\\testFile\\";
// 2、保存到临时文件
// 1K的数据缓冲
byte[] bs = new byte[1024];
// 读取到的数据长度
int len;
// 输出的文件流保存到本地文件

File tempFile
= new File(path);
if (!tempFile.exists()) {
tempFile.mkdirs();
}
os
= new FileOutputStream(tempFile.getPath() + File.separator + fileName);
// 开始读取
while ((len = inputStream.read(bs)) != -1) {
os.write(bs,
0, len);
}

}
catch (IOException e) {
e.printStackTrace();
}
catch (Exception e) {
e.printStackTrace();
}
finally {
// 完毕,关闭所有链接
try {
os.close();
inputStream.close();
}
catch (IOException e) {
e.printStackTrace();
}
}
}

文件保存方法.

 

 

附:

package com.ebways.web.upload.controller;

import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import com.ebways.web.base.BaseController;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.ebways.web.upload.url.UploadURL;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@Controller
@RequestMapping(value
= UploadURL.MODE_NAME)
public class UploadController extends BaseController {

@RequestMapping(value
= UploadURL.IMAGE_UPLOAD)
@ResponseBody
public String uploadFile(MultipartFile file, HttpServletRequest request, HttpServletResponse response) throws IllegalArgumentException, Exception {
// 参数列表
Map<String, Object> map = new HashMap<>();
map.put(
"file", file);
savePic(file.getInputStream(), file.getOriginalFilename());

//请求接口
String apiReturnStr = "";//apiHttpRequest(map, API_HOST_URL + "/image/upload");

return apiReturnStr;
}

private void savePic(InputStream inputStream, String fileName) {

OutputStream os
= null;
try {
String path
= "D:\\testFile\\";
// 2、保存到临时文件
// 1K的数据缓冲
byte[] bs = new byte[1024];
// 读取到的数据长度
int len;
// 输出的文件流保存到本地文件

File tempFile
= new File(path);
if (!tempFile.exists()) {
tempFile.mkdirs();
}
os
= new FileOutputStream(tempFile.getPath() + File.separator + fileName);
// 开始读取
while ((len = inputStream.read(bs)) != -1) {
os.write(bs,
0, len);
}

}
catch (IOException e) {
e.printStackTrace();
}
catch (Exception e) {
e.printStackTrace();
}
finally {
// 完毕,关闭所有链接
try {
os.close();
inputStream.close();
}
catch (IOException e) {
e.printStackTrace();
}
}
}

/**
* <p class="detail">
* 功能:公共Action
* </p>
*
* @date 2016年9月8日
*
@author wangsheng
*/
private String allowSuffix = "jpg,png,gif,jpeg";//允许文件格式
private long allowSize = 2L;//允许文件大小
private String fileName;
private String[] fileNames;

public String getAllowSuffix() {
return allowSuffix;
}

public void setAllowSuffix(String allowSuffix) {
this.allowSuffix = allowSuffix;
}

public long getAllowSize() {
return allowSize * 1024 * 1024;
}

public void setAllowSize(long allowSize) {
this.allowSize = allowSize;
}

public String getFileName() {
return fileName;
}

public void setFileName(String fileName) {
this.fileName = fileName;
}

public String[] getFileNames() {
return fileNames;
}

public void setFileNames(String[] fileNames) {
this.fileNames = fileNames;
}


/**
* <p class="detail">
* 功能:重新命名文件
* </p>
*
*
@return
*
@author wangsheng
* @date 2016年9月8日
*/
private String getFileNameNew() {
SimpleDateFormat fmt
= new SimpleDateFormat("yyyyMMddHHmmssSSS");
return fmt.format(new Date());
}

/**
* <p class="detail">
* 功能:文件上传
* </p>
*
*
@param files
*
@param destDir
*
@throws Exception
*
@author wangsheng
* @date 2014年9月25日
*/
public void uploads(MultipartFile[] files, String destDir, HttpServletRequest request) throws Exception {
String path
= request.getContextPath();
String basePath
= request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path;
try {
fileNames
= new String[files.length];
int index = 0;
for (MultipartFile file : files) {
String suffix
= file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1);
int length = getAllowSuffix().indexOf(suffix);
if (length == -1) {
throw new Exception("请上传允许格式的文件");
}
if (file.getSize() > getAllowSize()) {
throw new Exception("您上传的文件大小已经超出范围");
}
String realPath
= request.getSession().getServletContext().getRealPath("/");
File destFile
= new File(realPath + destDir);
if (!destFile.exists()) {
destFile.mkdirs();
}
String fileNameNew
= getFileNameNew() + "." + suffix;//
File f = new File(destFile.getAbsoluteFile() + "\\" + fileNameNew);
file.transferTo(f);
f.createNewFile();
fileNames[index
++] = basePath + destDir + fileNameNew;
}
}
catch (Exception e) {
throw e;
}
}

/**
* <p class="detail">
* 功能:文件上传
* </p>
*
*
@param file
*
@param destDir
*
@throws Exception
*
@author wangsheng
* @date 2016年9月8日
*/
public void upload(MultipartFile file, String destDir, HttpServletRequest request) throws Exception {
String path
= request.getContextPath();
String basePath
= request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path;
try {
String suffix
= file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1);
int length = getAllowSuffix().indexOf(suffix);
if (length == -1) {
throw new Exception("请上传允许格式的文件");
}
if (file.getSize() > getAllowSize()) {
throw new Exception("您上传的文件大小已经超出范围");
}

String realPath
= request.getSession().getServletContext().getRealPath("/");
File destFile
= new File(realPath + destDir);
if (!destFile.exists()) {
destFile.mkdirs();
}
String fileNameNew
= getFileNameNew() + "." + suffix;
File f
= new File(destFile.getAbsoluteFile() + "/" + fileNameNew);
file.transferTo(f);
f.createNewFile();
fileName
= basePath + destDir + fileNameNew;
}
catch (Exception e) {
throw e;
}
}

}