`

使用RestTemplate将本地文件上传到服务器

阅读更多
/**
     * 将本地文件上传到文件系统
     *
     * @param region           用户所在数据中心
     * @param userId           用户id
     * @param targetFolderUuid 目标文件夹的id
     * @param filePath         本地文件路径
     * @return
     */
    public static String uploadFileToFileSystem(String region, String userId, String targetFolderUuid, String filePath) {
        FileSystemResource resource = new FileSystemResource(filePath);
        if (!resource.exists() || Strings.isNullOrEmpty(targetFolderUuid)) {
            return null;
        }
        MultiValueMap<String, Object> param = new LinkedMultiValueMap<>();
        param.add("file", resource);
        param.add("userId", userId);
        param.add("targetFolderUuid", targetFolderUuid);
        try {
            String fileServerIp = getFileServerIp(region);
            ResponseEntity responseEntity = innerTokenAccess(HttpMethod.POST, fileServerIp + UPLOAD_URL, param, MediaType.MULTIPART_FORM_DATA);
            JSONObject jsonObject = JSONObject.fromObject(responseEntity.getBody());
            return jsonObject.getString("fileUuid");
        } catch (Exception e) {
            LOG.info("上传文件到文件系统失败:{}", e.getMessage());
        }
        return null;
    }

/**
     * 使用RestTemplate访问远程接口
     *
     * @param method    方法的请求类型 POST or GET OR ...
     * @param url       请求的url
     * @param obj       请求的参数
     * @param mediaType 头信息类型
     * @return
     * @throws Exception
     */
    public static ResponseEntity innerTokenAccess(HttpMethod method, String url, Object obj, MediaType mediaType) throws Exception {
        LOG.info("访问的链接:" + url);
        RestTemplate restTemplate = new RestTemplate();
        HttpHeaders httpHeaders = new HttpHeaders();
        httpHeaders.setContentType(mediaType);
        HttpEntity httpEntity = new HttpEntity(obj, httpHeaders);
        ResponseEntity result = restTemplate.exchange(url, method, httpEntity, String.class);
        LOG.info("访问接口:" + url + "返回的值为:" + result.getStatusCodeValue());
        return result;
    }

 

分享到:
评论

相关推荐

    精讲RestTemplate文件上传下载与大文件流式下载.docx

    根据提供的文档标题、描述、标签以及部分内容,本文将详细介绍如何使用Spring框架中的`RestTemplate`进行文件上传、普通文件下载及大文件的流式下载。 ### 一、文件上传 在进行文件上传时,通常涉及到以下几个步骤...

    springboot-layui调用文件服务器接口实现文件上传下载.docx

    - 使用`ByteArrayResource`将文件内容转换为可以发送的资源,然后通过`RestTemplate`的`exchange()`方法将文件发送到外部服务器。 ```java // 调用文件服务器上传接口 ResponseEntity&lt;String&gt; entity = ...

    java多文件上传

    这需要我们编写代码来读取文件流并将其写入到本地文件系统。可以使用`MultipartFile`的`getBytes()`方法获取文件内容,然后使用`FileOutputStream`将内容写入目标文件。 以下是一个简单的示例,展示了如何接收和...

    minio免费文件管理器,windows版本,若依RuoYi-Vue-Plus框架使用,有需要的可以下载,因为官网下载特别慢。

    4. **后台运行minio.vbs**:Visual Basic Script (VBS) 文件,可能用于将MinIO服务器以后台服务的形式运行。这样,即使关闭了命令行窗口,MinIO也能持续运行,确保服务的连续性。 在部署和使用这些文件时,用户需要...

    Spring Cloud应用程序.zip

    开发环境中,我们通常在本地配置文件中管理所有服务的配置,但在生产环境中,这种做法难以维护和更新。Config Server允许我们将配置存储在远程Git仓库中,各个服务在启动时从Config Server拉取相应的配置,实现配置...

    Spring Cloud(Dalston )中文参考手册

    - **如何包含Eureka服务器**:说明如何将Eureka服务器添加到项目中。 - **如何运行Eureka服务器**:介绍如何启动和运行Eureka服务器。 - **高可用性,区域和地区**:讲解如何配置Eureka服务器以支持高可用性和...

    Spring.3.x企业应用开发实战(完整版).part2

    15.6.2 编写控制器和文件上传表单页面 15.7 杂项 15.7.1 静态资源处理 15.7.2 装配拦截器 15.7.3 异常处理 15.8 小结 第5篇 测试及实战 第16章 实战型单元测试 16.1 单元测试概述 16.1.1 为什么需要单元测试 16.1.2...

    Spring3.x企业应用开发实战(完整版) part1

    15.6.2 编写控制器和文件上传表单页面 15.7 杂项 15.7.1 静态资源处理 15.7.2 装配拦截器 15.7.3 异常处理 15.8 小结 第5篇 测试及实战 第16章 实战型单元测试 16.1 单元测试概述 16.1.1 为什么需要单元测试 16.1.2...

    随缘亲情奉献 Spring Cloud Dalston 中文文档 参考手册 中文版

    - **通过Zuul上传文件**:支持文件上传功能。 - **查询字符串编码**:处理URL中的查询字符串。 - **普通嵌入Zuul**:直接使用Zuul作为网关服务。 - **禁用Zuul过滤器**:选择性禁用某些过滤器。 - **为路线提供...

    spring cloud 中文文档

    - **通过Zuul上传文件**:提供了关于如何通过Zuul网关上传文件的具体指导。 - **查询字符串编码**:讨论了如何处理URL中的查询字符串编码问题。 - **普通嵌入Zuul**:解释了如何在非Spring Boot项目中嵌入Zuul。 ##...

Global site tag (gtag.js) - Google Analytics