美文网首页
使用NIO快速下载文件

使用NIO快速下载文件

作者: RandyZhang | 来源:发表于2018-08-02 12:07 被阅读0次
Observable.fromIterable(itemImageMapper.findLostUrlItemImageList(i, i + 100))
                        .filter(itemImageDO -> StringUtils.isNotEmpty(itemImageDO.getOriUrl()))
                        .observeOn(Schedulers.io())
                        .map(itemImageDO -> {
                            log.info("Randy-download-run on :" + Thread.currentThread().getName());
                            File imgFile = File.createTempFile("FIX_IMG_", ".jpg");
                            try (InputStream inputStream = new URL(itemImageDO.getOriUrl()).openStream()) {
                                Path target = Paths.get(imgFile.getParent(), imgFile.getName());
                                Files.copy(inputStream, target, StandardCopyOption.REPLACE_EXISTING);
                                QiNiuUploadResp qiNiuUploadResp = qiniuUploadService.upload(imgFile.getParent() + File.separator, imgFile.getName());
                                itemImageDO.setUrl(qiNiuUploadResp.getPath());
                            } catch (IOException e) {
                                log.warn("文件处理失败", e);
                            } finally {
                                imgFile.deleteOnExit();
                            }
                            return itemImageDO;
                        })
                        .filter(itemImageDO -> StringUtils.isNotEmpty(itemImageDO.getUrl()))
                        .observeOn(Schedulers.single())
                        .map(itemImageDO -> {
                            log.info("Randy-updateQiNiuUrl-run on :" + Thread.currentThread().getName());
                            int ret = itemImageMapper.updateQiNiuUrl(itemImageDO.getId(), itemImageDO.getUrl());
                            return ret;
                        })
                        .subscribe();

相关文章

网友评论

      本文标题:使用NIO快速下载文件

      本文链接:https://www.haomeiwen.com/subject/tpmjvftx.html