java IO流实现文件上传案例
HTML:
<div class="input-group">
<input type="file" name="FilePath" class="form-control">
<span class="input-group-addon" ng-click="selectFile()">上传</span>
</div>
JavaScript:
/**
* 上传
*此处js掺杂部分angular和jquery框架,需要引入相关组件,根据自己需求去改
*
*/
$scope.selectFile = function(){
//H5文件对象
var formData = new FormData();
var file = document.getElementsByName('FilePath')[0].files[0];
if(!file){
alert("请选择需要上传的附件!!!");
return;
}
formData.append('file',file);
formData.append('name','zz');
$.ajax({
url : 'http://localhost:8080/fileUpload',
type : 'POST',
processData : false,
contentType : false,
data : formData
}).success(function(data){
$scope.findAllFile();
}).error(function(){
})
}
Java:
@RequestMapping("/fileUpload")
@ResponseBody
public FileBean fileUpload(@RequestParam(value="file",required = true) MultipartFile file,
@RequestParam(value="name",required = true) String name,
HttpServletRequest request){
FileBean fileBean = null;
try{
byte[] fileByte = file.getBytes();
//获取文件的源文件名称
String oldFileName = file.getOriginalFilename();
//获取文件保存路径,此处可配置化,而不是写死,暂时写死
String filePath = "D://upload//";
//时间戳生成新的文件名,防止因同名文件被覆盖
Date date = new Date();
String newFileName = String.valueOf(date.getTime());
//上传时间(系统当前时间)
String uploadTime = DateUtils.DateParseString(date);
//文件后缀名
String suffixName = oldFileName.substring(oldFileName.lastIndexOf("."));
//组合生成新的文件名
newFileName = newFileName + suffixName;
//文件上传
boolean flag = FileUtils.uploadFile(fileByte,filePath,newFileName);
//文件上传成功之后,文件相关信息入库操作
if(flag){
fileBean = new FileBean(newFileName,"夏炳成",uploadTime,filePath,oldFileName);
//这里是文件数据入库操作,根据自己需求自己更改
addFile(fileBean);
}
}catch(IOException ioException){
fileBean = new FileBean();
}
return fileBean;
}
FileUtils工具类:
public static boolean uploadFile(byte[] file,String filePath,String fileName){
//默认文件上传成功
boolean flag = true;
//new一个文件对象实例
File targetFile = new File(filePath);
//如果当前文件目录不存在就自动创建该文件或者目录
if(!targetFile.exists()){
targetFile.mkdirs();
}
try{
//通过文件流实现文件上传
FileOutputStream fileOutputStream = new FileOutputStream(filePath + fileName);
fileOutputStream.write(file);
fileOutputStream.flush();
fileOutputStream.close();
}catch(FileNotFoundException e){
System.out.println("文件不存在异常");
flag = false;
}catch(IOException ioException){
System.out.println("javaIO流异常");
flag = false;
}
return flag;
}