# 文件上传和下载

# 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());
}
Last Updated: 12/2/2021, 9:29:16 PM