当前位置: 首页 > 知识库问答 >
问题:

安泰服务文件上传

夏星阑
2023-03-14
My RestPictureServices Class

@Service
@TestProfile
public class RestPictureServices implements SahaPictureServices {

    @Autowired
    private PictureRepository pictureRepository;

    @Autowired
    private DozerBeanMapper mapper;

    @Override
    public Collection<SahaPicture> pictures() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public SahaPicture pictureOfSaha(Long sahaId) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public SahaPicture save(SahaPicture picture) {

        SahaPictureEntity pictureEntity=new SahaPictureEntity();
        mapper.map(picture, pictureEntity);
        pictureRepository.save(pictureEntity);
        SahaPicture savedPicture=new SahaPicture();
        mapper.map(pictureEntity, savedPicture);

        return  savedPicture;
    }

    @Override
    public Boolean delete(Long id) {
        // TODO Auto-generated method stub
        return true;
    }

    @Override
    public SahaPicture update(Long id, SahaPicture picture) {
        // TODO Auto-generated method stub
        return null;
    }

}

My SahaPictureController class

@JsonRestController
@RequestMapping(path = "/saha/picture")
public class PictureController {

    @Autowired
    @Qualifier("restPictureServices")
    private SahaPictureServices pictureServices;


    @RequestMapping(method = RequestMethod.POST)
    public  SahaPicture singleSave(@RequestBody SahaPicture picture) {
        return pictureServices.save(picture);
    }

}

My PictureSahaRepository interface

 public interface PictureRepository extends CrudRepository<SahaPictureEntity,Long>  {

    }

    My picture Model class

public class SahaPicture {

    private MultipartFile file;
    //getter and setter methods   
}




    This is SahaPictureEntity class

@Entity
@Table(name="SahaPicture")

public class SahaPictureEntity {

    @Id
    @GeneratedValue
    private Long id;


    @Column
    @Lob
    private MultipartFile file;

    //getter and setter methods 

}
My JsonRestController Annotation

@RestController
@RequestMapping(produces = MediaType.APPLICATION_JSON_VALUE)
@Retention(RetentionPolicy.RUNTIME)
public @interface JsonRestController {
}

My Services Interface
public interface SahaPictureServices {


    Collection<SahaPicture> pictures();
    SahaPicture pictureOfSaha(Long sahaId);
    SahaPicture save(SahaPicture picture);
    Boolean delete(Long id);
    SahaPicture update(Long id, SahaPicture picture);
}

My Service Configuration Class using dozer mapping jar.
@Configuration
public class ServiceConfiguration {

    @Bean
    public DozerBeanMapper mapper() {
        return new DozerBeanMapper();
    }
}

如何使用rest full services Spring boot将文件或图像插入数据库。我正在尝试restfull服务以插入文件,但遇到错误

无法读取HTTP消息:org . spring framework . HTTP . converter . httpmessagenoretreadableexception:无法读取文档:数字值中的意外字符('-'(代码45)):减号后应为数字(0-9),以便在[Source:Java . io . pussbackinputstream @ 21 D5 ad7d;处获得有效的数字值。行:1,列:3];嵌套异常为com . faster XML . Jackson . core . jsonparseexception:数值中出现意外字符('-'(代码45)):减号后应为数字(0-9),以便在[Source:Java . io . pushback inputstream @ 21 D5 ad 7d;处获得有效的数值。第1行,第3列]

请求和响应如下图所示。

在此处输入图像描述

共有1个答案

谭晓博
2023-03-14

您需要创建一个包含MultipartFile参数的REST方法。该对象有一个getBytes()方法以及一个getInputStream()方法,您可以使用它来获取数据。然后,您可以创建对象并将其保存到存储库中。

看见https://spring.io/guides/gs/uploading-files/和http://www.concretepage.com/spring-4/spring-4-mvc-single-multiple-file-upload-example-with-tomcat作为如何使用Spring上载文件的良好参考。

以下是如何使用jQuery将文件上传到REST服务的前端示例。

        var token = $("meta[name='_csrf']").attr("content");
        var header = $("meta[name='_csrf_header']").attr("content");
        $.ajax({
            url: "/restapi/requests/replay/upload",
            type: "POST",
            beforeSend: function (request)
            {
                request.setRequestHeader(header,token);
            },
            data: new FormData($("#upload-file-form")[0]),
            enctype: 'multipart/form-data',
            processData: false,
            contentType: false,
            cache: false,
            success: function () {
                // Handle upload success
                addText( "File uploaded successfully.")
            },
            error: function () {
                // Handle upload error
                addText( "File upload error.")
            }
        });

然后下面是Rest控制器的样子:

@RestController
public class ReplayRestController {

@Autowired
private ApplicationContext applicationContext;

@RequestMapping(value="/restapi/requests/replay/upload", method = RequestMethod.POST)
@ResponseBody
public ResponseEntity<?> processUpload(
        @RequestParam("uploadfile") MultipartFile uploadfile,
        @RequestParam("databaseWriteIdUpload") String databaseWriteId,
        @RequestParam("recordsToUse")ReplayUpload.RecordsToUse recordsToUse
) {

    try {
        String fileName = uploadfile.getOriginalFilename();
        if (databaseWriteId == null || "".equals(databaseWriteId)) {
            databaseWriteId = fileName;
        }
        ReplayUpload replayUpload = applicationContext.getBean( ReplayUpload.class );
        replayUpload.process( uploadfile.getInputStream(), databaseWriteId, recordsToUse );
    }
    catch (Exception e) {
        System.out.println(e.getMessage());
        return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
    }

    return new ResponseEntity<>(HttpStatus.OK);    }
}
 类似资料:
  • 我正在使用Spring4.0为RESTfulWeb服务创建POC。如果我们只传递字符串或任何其他基本数据类型,它就可以正常工作。 这个很好用。但如果我想将字节流或文件对象传递给函数,我如何编写具有这些参数的函数?我如何编写提供传递字节流的客户端? 我尝试了这个代码,但是得到了415个错误。 客户端代码-使用apache HttpClient

  • 最近遇到一个这样的需求:传一个压缩包给后台Linux服务器,后台保存后解压读取里面的文件,现学现做。在这里做个记录。 文件上传 文件上传有很多方法,这里推荐一个自己感觉挺好用的一种,代码奉上:

  • 在我的项目中,我在后端有Spring Boot,在前端有React.js。 我的后端工作正常,我知道,因为我已经用Postman测试过了。 在上传文件的前端,我有一个名为 ,它看起来像这样: 但问题是每次上传都失败。也许原因是路径,不确定。我试图路径。我得到的是C:\fakepath\Screenshot(187). png 现在我的问题是,如果是因为路径,我怎么才能正确地做它(据我所知,浏览器不

  • 1.接口描述 该API的功能是上传图片到云端。 图片要求 格式为 JPG(JPEG),BMP,PNG,GIF,TIFF 宽和高大于 8px,小于等于4000px 小于等于 5 MB 请求方式 POST 请求 URL https://cloudapi.linkface.cn/resources/upload_image 2.请求参数 字段 类型 必需 描述 api_id string 是 API

  • 我正在尝试上传一个图像。当我从本地主机上进行时,它工作得很好,但当我发布它时,它从服务器上抛出一个错误: 当我使用此代码时: 错误为: System.io.DirectoryNotFoundException:找不到路径“d:\inetpub\vhosts\xx.com\httpdocs\images\sections\developer\clientlogo\demo.png”的一部分。在sys

  • 是否可以使用server1将文件上传到server2? 访客请访问:我的网站。com(server1) 然后他将一个文件上传到server1,server1会自动将该文件上传到server2?? 或者简单地说,用户可以使用server1作为代理将文件上传到server2,因为server2只能从server1访问 会有帮助吗,还是有其他更好的解决方案?

  • 我正在尝试通过REST API在服务器上上传文件。我的api请求FormData模型,但Im得到错误。 devtools中得“我得请求”得有效负载 ------WebKitFormBoundaryVpirgXMC3RU3AOFA内容-配置:表单-数据;name=“文件”;filename=“test.jpg”content-type:image/jpeg -----WebKitFormBounda

  • 本文向大家介绍SpringMVC图片文件跨服务器上传,包括了SpringMVC图片文件跨服务器上传的使用技巧和注意事项,需要的朋友参考一下 图片文件跨服务器上传(我使用的公司云桌面作为上传服务器,自己的笔记本作为存储服务器测试的) 一、上传服务器: 1、pom文件(使用jersey插件) 2、前端页面: 3、后台controller: 二、存储图片文件服务器: 1、Tomcat的conf目录下的w