使用Angularjs和Spring上传Mutipart文件

时间:2017-08-14 20:43:03

标签: javascript angularjs spring jboss multipartform-data

我尝试使用Angularjs上传文件,用于通过Spring公开的REST API:

这是我的控制器:

@RequestMapping(value = util/images/{partyId},
        method = RequestMethod.POST)
public JsonNode uploadPartyRefImage(@RequestPart("file") MultipartFile inputFile,
                                    @PathVariable String partyId){
    ObjectMapper objectMapper = new ObjectMapper();
    JsonNode jNode = null;
    try {
        String[] fileInput = ((DiskFileItem) ((CommonsMultipartFile) inputFile).getFileItem()).getName().split("\\.");
        Path storagePath= Paths.get(uploadPath);
        FileSystemUtil.writeFile(storagePath,inputFile.getInputStream());
        jNode = objectMapper.readTree("{\"type\":\"" + "success" + "\",\"fileStorePath\":\"" + pathString + "\"}");
    } catch (Exception exApi) {
        LOGGER.error("Error uploading Party attached Image "+ exApi);
    }
    return jNode;
}

通过Postman使用时,此API工作正常。邮递员的电话:

  

enter image description here

但是当通过angular调用它会抛出异常:

角度服务:

function uploadImage(formData,partyRefId){
        console.log(utilService);
        if (utilService) {
            return utilService.request({
                method: "POST",
                resource: "/images/" + partyRefId,
                headers: { 'Content-Type': undefined},
                processData: false,
                transformRequest: angular.identity,
                mimeType: "multipart/form-data",
                cache: false,
                data: formData
            })
                .then(function (data) {
                    if (data) {
                        return getResultDataFromResponse(data);
                    }
                }, function (error) {
                    console.log('error invoking document upload service', error);
                });
        }
    }

角度控制器:

$ctrl.uploadDocument = function () {
                var formData = new FormData();
                formData.append("file", k.documentfile.lfFile);
                var fileName = "PARTY01" + k.documentReference;
                fbeOnboardingWizardService.uploadImage(formData,fileName)
                    .then(function (data) {
                    if(data.type == "success")
                       console.log(data.fileStorePath);
                   },function (error) {
                        console.log(error);
                   });
};

Jboss中的错误:

02:06:25,442 WARN  [org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver] (http--0.0.0.0-8080-4) Handler execution resulted in exception: Content type 'null' not supported

如果我将角色服务中的内容类型更新为" multipart / form-data"

Jboss中的错误:

Servlet.service() for servlet appServlet threw exception: org.apache.commons.fileupload.FileUploadException: the request was rejected because no multipart boundary was found

0 个答案:

没有答案