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

是否可以使用resttemplate在azure blob存储-Java中上载文件

宋典
2023-03-14

有没有办法在Java-Spring框架中使用rest模板将文件上传到Azure blob存储?我看到了所有使用SDK的例子,它是成功的,但我们被告知不要使用SDK-Java。我知道这个问题有10000英尺高,但任何指针/方向都会有很大帮助。

共有1个答案

方德宇
2023-03-14

不知道为什么不使用SDK,也不知道谁会告诉你。

无论如何,是的,你可以使用RestTemplate或者更好的webClient。

您所要做的就是将随SDK发送的请求映射到云。

您必须手动添加标头身份验证。我想是序列化文件吧。

当您为客户端提供受支持的SDK时,这是一项大量的工作。

例如,下面是一个用WebClient发送的Redmine服务器的简单请求

String url = "http://localhost:3001/projects.json"; //Redmine local server
RestTemplate restTemplate = new RestTemplate();
JSONObject object = new JSONObject();   //Json object that will need to be sent to redmine
object.put("name", "dummyName");        // Should look like this
object.put("identifier", "dummyId");    // {"project":{"identifier":"dummyId","name":"dummyName"}}
JSONObject body = new JSONObject();     
body.put("project", object);            
String plainCreds = "user:bitnami1"; // default basic auth encoding
byte[] plainCredsBytes = plainCreds.getBytes();
byte[] base64CredsBytes = Base64.encodeBase64(plainCredsBytes);
String base64Creds = new String(base64CredsBytes);
HttpHeaders headers = new HttpHeaders();
headers.add("Authorization", "Basic " + base64Creds); 
headers.add("Content-Type", "application/json");
RequestEntity<JSONObject> requestEntity = RequestEntity
                .post(new URI(url))
                .accept(MediaType.APPLICATION_JSON)
                .headers(headers)
                .body(body);
ResponseEntity<String> r = restTemplate.exchange(requestEntity, String.class);

这就是使用RestTemplate的同一个例子

String url = "http://localhost:3001/projects.json"; //Redmine local server
RestTemplate restTemplate = new RestTemplate();
JSONObject object = new JSONObject();   //Json object that will need to be sent to redmine
object.put("name", "dummyName");        // Should look like this
object.put("identifier", "dummyId");    // {"project":{"identifier":"dummyId","name":"dummyName"}}
JSONObject body = new JSONObject();     
body.put("project", object);            
String plainCreds = "user:bitnami1"; // default basic auth encoding
byte[] plainCredsBytes = plainCreds.getBytes();
byte[] base64CredsBytes = Base64.encodeBase64(plainCredsBytes);
String base64Creds = new String(base64CredsBytes);
HttpHeaders headers = new HttpHeaders();
headers.add("Authorization", "Basic " + base64Creds); 
headers.add("Content-Type", "application/json");
HttpEntity<Object> entity = new HttpEntity<Object>(body, headers);
ResponseEntity<String> result = restTemplate.exchange("http://localhost:3001/projects.json",
                HttpMethod.POST,
                entity,
                String.class);

这两个都是可能的,因为我试图匹配这个卷曲的要求

curl --location --request POST 'localhost:3001/projects.json' \
--header 'Authorization: Basic dXNlcjpiaXRuYW1pMQ==' \
--header 'Content-Type: application/json' \
--data-raw '{"project":{"identifier":"dummyId","name":"dummyName"}}'

因此,一旦您知道请求是什么样子,您就可以使用RestTemboard或WebClient或任何其他类似的类来构建您的请求。

 类似资料:
  • 我在JPA实体上拥有以下财产: 如果置信度设置为“0.000”,例如:setConfidence(新的BigDecimal(“0.000”));然后实体被持久化到数据库中,然后从数据库中取回,取回的值将失去其精度和规模,仅为0。 数据库模式是在部署Web应用程序时由JPA/Eclipselink创建的。 我的环境是EclipseLink 2.3.2。v20111125-r10461,Oracle

  • 问题内容: 我需要在Spring Data Repository中使用原始SQL,这可能吗?我看到的所有内容始终都是基于实体的。 问题答案: @Query批注允许通过将nativeQuery标志设置为true来执行本地查询。 引用Spring Data JPA 参考文档。

  • 问题内容: 我阅读了JVM内存模型,并对以下内容感到困惑: JVM是否将.class实例存储在其内存中。如果是,则在哪个区域。 就像在加载类后,JVM生成了机器级代码,然后开始执行机器代码指令,然后仅在堆上创建对象,并填充了方法区域。 perm gen等区域存储字节码还是机器级代码? 烫发与方法面积 我真的很感谢您对此主题的任何帮助。 谢谢。 问题答案: 1)文件将在加载时存储在permgen存储

  • 我们的网站已经使用Google Docs editor和Zoho实现了这一点,所以现在我们想添加Office 我使用Visual Studio2013尝试了Office 365 starter项目以及单承租人和多承租人项目。但是,当我在visual Studio2013中打开ASP.NET网站时,缺少菜单项。但是,它用于ASP.NET MVC项目。

  • 以上内容将注销,此: 我只是想知道我是否可以替换mysite。本地主机。具有文件夹路径的com。我甚至尝试用文件夹的完整路径替换URL,但是只能在上工作。是否有将文件保存到文件夹的功能?