java Long型数据返回到前端失进度问题解决

直接在springmvc配置中增加信息转换。亲测可用。简单粗暴

@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
    MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
    ObjectMapper objectMapper = new ObjectMapper();
    SimpleModule simpleModule = new SimpleModule();
    simpleModule.addSerializer(Long.class, ToStringSerializer.instance);
    simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance);
    objectMapper.registerModule(simpleModule);
    objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);//忽略未知字段
    jackson2HttpMessageConverter.setObjectMapper(objectMapper);
    converters.add(jackson2HttpMessageConverter);
}

如果对以上代码。不太清楚的。可以翻看下,springmvc的HttpMessageConvert。括号需要实现WebMvcConfigurer去增加信息转换

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要实现Java的minio下载文件实时返回下载进度前端,可以通过使用Java SDK提供的ProgressListener接口来实现。 首先,需要创建一个ProgressListener的实现类,在该类中实现progressChanged方法,该方法会在文件下载进度发生变化时被调用,我们可以在该方法中将下载进度返回前端。 ```java public class DownloadProgressListener implements ProgressListener { private final HttpServletResponse response; public DownloadProgressListener(HttpServletResponse response) { this.response = response; } @Override public void progressChanged(ProgressEvent progressEvent) { long bytesTransferred = progressEvent.getBytesTransferred(); long totalBytesToTransfer = progressEvent.getTotalBytesToTransfer(); int progress = (int) ((bytesTransferred * 100) / totalBytesToTransfer); try { response.getWriter().println("下载进度:" + progress + "%"); response.flushBuffer(); } catch (IOException e) { e.printStackTrace(); } } } ``` 然后,在进行文件下载时,将创建好的ProgressListener实例传递给GetObjectRequest对象的withProgressListener方法即可。 ```java public void downloadFile(String bucketName, String objectName, HttpServletResponse response) throws IOException, InvalidKeyException, NoSuchAlgorithmException, InsufficientDataException, InternalException, ErrorResponseException, RegionConflictException { MinioClient minioClient = new MinioClient("http://minio.example.com", "AccessKey", "SecretKey"); GetObjectRequest getObjectRequest = GetObjectRequest.builder() .bucket(bucketName) .object(objectName) .build(); DownloadProgressListener downloadProgressListener = new DownloadProgressListener(response); getObjectRequest = getObjectRequest.withProgressListener(downloadProgressListener); minioClient.getObject(getObjectRequest, response.getOutputStream()); } ``` 在上述代码中,我们将创建好的DownloadProgressListener实例传递给GetObjectRequest对象的withProgressListener方法,然后使用MinioClient的getObject方法进行文件下载,同时将HttpServletResponse的输出流传递给getObject方法,让文件内容直接写入到响应中,这样前端就能够实时获得下载进度了。 注意:在使用withProgressListener方法时,需要在GetObjectRequest对象创建完成后再调用该方法,否则会抛出NullPointerException异常。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王威振的csdn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值