# 文件上传和下载
# Html
<div class="form-group">
<div class="col-sm-4" style="padding-top: 20px;">
<a href="javascript:;" class="a-upload"
style="height: 35px;width: 200px;text-align: center;">
<input type="file" ngf-select="setSelectedFile($file)">添加附件
</a>
</div>
</div>
# JavaScript代码
$scope.file = null;
$scope.fileTips = [];
$scope.files = [];
$scope.setSelectedFile = function (file) {
var uploadFile = {
error: null,
fileName: null
};
if (file) {
uploadFile.fileName = file.name;
}
if (file && file.size > 5000000) {
uploadFile.error = "文件选择过大,请重新选择";
}
if (uploadFile.fileName != null) {
$scope.fileTips.push(uploadFile);
$scope.files.push(file);
}
}
$scope.removeFile = function (index) {
$scope.files.splice(index, 1);
$scope.fileTips.splice(index, 1);
}
// 传输. ng-file-upload
$scope.upload = function () {
Upload.upload({
//服务端接收
url: $.i18n.prop('rest_url') + "/idcloud-rest/rest/feedback/submit",
//上传的文件
data: {
file: $scope.files,
feedback: $scope.feedbackInfo
},
headers: {'authorization': "Bearer " + ($scope.getCookies() == 'undefined' ? "" : $scope.getCookies())}
}).progress(function (evt) {
//进度条
var progressPercentage = parseInt(100.0 * evt.loaded / evt.total);
}).success(function (data, status, headers, config) {
//上传成功
layer.msg('提交成功');
}).error(function (data, status, headers, config) {
//上传失败
layer.msg('提交失败');
});
};
# Java
@RequestMapping(value = "/submit", method = RequestMethod.POST)
private RestResult submitFeedback(MultipartRequest multipartRequest, @Context HttpServletRequest request) {
Iterator<String> fileNames = multipartRequest.getFileNames();
List<MultipartFile> multipartFileList = new ArrayList<>();
while(fileNames.hasNext()){
String filename = fileNames.next();
MultiValueMap<String, MultipartFile> multiValueMap = multipartRequest.getMultiFileMap();
MultipartFile mfile = multiValueMap.getFirst(filename);
multipartFileList.add(mfile);
}
Map<String, String[]> feedbackMap = request.getParameterMap();
Feedback feedback = new Feedback();
feedback.setEmail(feedbackMap.get("feedback[email]")[0]);
feedback.setCategory(feedbackMap.get("feedback[category]")[0]);
feedback.setName(feedbackMap.get("feedback[name]")[0]);
feedback.setCompany(feedbackMap.get("feedback[company]")[0]);
feedback.setProduct(feedbackMap.get("feedback[product]")[0]);
feedback.setContent(feedbackMap.get("feedback[content]")[0]);
return new RestResult(feedbackService.insertSelective(multipartFileList, feedback));
}
//将文件上传到服务器
try {
File newFile = new File(attachment.getAttachmentUrl() + "/" + attachment.getAttachmentName());
//如果目录不存在,则创建目录
if (!newFile.getParentFile().exists()) {
newFile.getParentFile().mkdirs();
}
file.transferTo(newFile);
} catch (IOException e) {
logger.error(e.getMessage());
}