如何在两台ubuntu系统电脑之间共享资料

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在两台ubuntu系统电脑之间共享资料相关的知识,希望对你有一定的参考价值。

相同同系统(都是inux也可以)的两台电脑可以实现共享,因为IP规则里的NETBios一样,同系统同网络的电脑可以实现共享。如果两机要共享东西,首先要在同一局域网,同一工作组,然后还要设置共享。

在同一个局域网,直接点右键把文件夹共享了。然后查看该电脑局域网IP。
在同一局域网的另一台电脑,按win+R 输入 \\IP地址
就可以查看到共享的文件。然后就可以操作了。
但两台电脑要在同一工作组。
可以参考win系统的共享方式:http://jingyan.baidu.com/article/4f7d5712839d4a1a201927e9.html
参考技术A 上传至云盘。进入另一个系统的时候登陆并下载。

如何使用 RequestBody 和 PostMapping 在两台服务器之间共享数据?

【中文标题】如何使用 RequestBody 和 PostMapping 在两台服务器之间共享数据?【英文标题】:How to share data between two server using RequestBody and PostMapping? 【发布时间】:2021-10-14 04:45:30 【问题描述】:

我正在尝试使用 ResponseEntity 在 Spring Boot 中将数据从一台服务器 (8081) 共享到另一台服务器 (8082),但我无法构建主体。

这是我写的代码,

服务器 1-

    @GetMapping("/redirect")
    public ResponseEntity<Void> redirectPgServer(@RequestParam("txnId") String txnId, 
    @RequestParam("amount") String amount) 

    // Redirect to server 2
    ProductDetails ref=new ProductDetails();
    ref.setTxnId("txnId");
    ref.setAmount("amount);
    HttpHeaders head = new HttpHeaders();
    String url = "http://localhost:8082/redirect-server";                                                                                                       
    System.out.println(url);
    head.setLocation(URI.create(url));
    return new ResponseEntity<Void>(ref, head, HttpStatus.FOUND);

服务器2-

 @GetMapping(value = "/redirect-server")
 public String validateData(@RequestBody ProductDetails ref)

    //Server 2 receive data
      System.out.println(ref.getAmount());  

 //Does not gives any output since it throws error Request Body Missing, also if I mention 
  post mapping above it throws error Request method 'GET' not supported]

     return "index";   //Using Thymeleaf for displaying html page.
   

我可以通过操纵 url 和使用 PathVariable 仅使用 header 共享数据,但我想使用 Post Mapping 因为我想隐藏参数在浏览器中对用户可见的 URL。我还尝试使用 RestTemplate 将我带回服务器 1 并引发错误 - Spring rest 模板无法从 text/html utf8 转换

【问题讨论】:

这个问题不完整。这里没有通讯。只有一个定义的端点,另一个似乎什么都不做的端点。缺少的部分很可能是您遇到问题的地方。 您很可能需要将ResponseEntity&lt;Void&gt; 更改为ResponseEntity&lt;ProductDetails&gt; 【参考方案1】:

我的建议是用@PostMapping 注释这两种方法,同时删除@RequestBody 注释。在第一个服务器中,您应该使用 307 HTTP 代码(这是临时重定向)进行响应,基本上这会告诉浏览器,重试对另一个端点的调用(在 Location 标头中给出)。

类似这样的:

服务器 1

 @PostMapping(value = "/redirect", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
    public ResponseEntity redirect(Product product) 
        HttpHeaders httpHeaders = new HttpHeaders();
        httpHeaders.setLocation(URI.create("http://localhost:8082/product"));
        return new ResponseEntity(httpHeaders, HttpStatus.TEMPORARY_REDIRECT);
    

服务器 2

@PostMapping(value = "/product", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
public void redirect(Product prod) 
    System.out.println(prod.getId());
    //do your stuff

HTML 页面

<html>
    <body>
        <form action="http://localhost:8081/redirect" method="POST">
            <input name="id">
            <input name="name">
            <button type="submit">Send</button>
         </form>
    </body>
</html>

如果您不使用表单,而是使用某种异步调用,您必须指定 url 表单编码。否则你会得到一个 405。

我已经用邮递员和一个 html 页面尝试过代码,它确实可以正常工作。 (用 Firefox 试过)

如果有不清楚的地方不要问。

我发现了一个类似的问题,我从中获得了灵感 A good way to redirect with a POST request?

【讨论】:

以上是关于如何在两台ubuntu系统电脑之间共享资料的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 RequestBody 和 PostMapping 在两台服务器之间共享数据?

如何实现两台电脑之间的文件自动同步?

onenote如何在两台电脑之间同步

两台电脑如何同步文件?

怎么使用scp 命令在两台电脑上传输文件

两台ubuntu的电脑,怎么用一根网线直连,传输文件?