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;
}