V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
TowerLi
V2EX  ›  Java

请教一下如何写一个通过 HTTPS 协议传输文件的接口。

  •  
  •   TowerLi · 2020-02-19 11:54:07 +08:00 · 3612 次点击
    这是一个创建于 1499 天前的主题,其中的信息可能已经有所发展或是发生改变。

    请教一下如何写一个通过 HTTPS 协议传输文件的接口,保存到服务器上,不使用界面,其他人调用这个接口就可以上传文件,有大佬能指点指点吗

    16 条回复    2020-02-20 09:46:34 +08:00
    Yourshell
        1
    Yourshell  
       2020-02-19 12:32:45 +08:00
    要不先去学习下基础?
    CEBBCAT
        2
    CEBBCAT  
       2020-02-19 12:46:29 +08:00 via Android   ❤️ 2
    /t/643584 同样的问题不要问多次。另外,你应该一一致谢对你有帮助的人
    webshe11
        3
    webshe11  
       2020-02-19 12:55:26 +08:00
    如果 WebDAV 也算接口,启动 WebDAV。
    izoabr
        4
    izoabr  
       2020-02-19 13:15:55 +08:00
    先了解一下 HTTP 协议,以及里面的 POST 怎么用
    Tink
        5
    Tink  
       2020-02-19 13:21:23 +08:00 via iPhone
    这是最基础的文件上传啊
    zifangsky
        6
    zifangsky  
       2020-02-19 13:28:22 +08:00
    你应该一一致谢对你有帮助的人
    blu10ph
        7
    blu10ph  
       2020-02-19 13:43:41 +08:00
    Multipart/form-data
    pytth
        8
    pytth  
       2020-02-19 14:04:55 +08:00
    ```
    <?php
    //初始化 CURL
    $ch = curl_init();

    //目标服务器地址
    curl_setopt($ch, CURLOPT_URL, '接收端接口');

    //设置上传的文件
    curl_setopt($ch, CURLOPT_POST, true);
    $data = array('name 值' => new CURLFile('绝对路径'));
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

    curl_exec($ch);
    curl_close($ch);
    ?>
    ```
    deplives
        9
    deplives  
       2020-02-19 14:28:07 +08:00
    这边建议您先学习一下《计算机网络》这门课程呢亲
    DelayNoMay
        10
    DelayNoMay  
       2020-02-19 14:29:15 +08:00
    最近刚好做了一个 golang 写的 http 文件服务,可以上传,下载,删除文件
    TowerLi
        11
    TowerLi  
    OP
       2020-02-19 14:29:19 +08:00
    @CEBBCAT 大佬,我错了,另外这些天看了很多,跟着菜鸟教程的代码实现了一个 servlet 的 jsp 页面上传文件,总体来说还是看不太明白本质,想着如果不用界面的 form 表单提交该怎么做呢? 他们提示的 spring-boot 的框架应该是最好的选择吧,现在企业里面应该都用,没用过,好难上手,都是我天资愚钝,看那么久都不会。
    ipwx
        12
    ipwx  
       2020-02-19 14:35:18 +08:00
    @TowerLi "不用界面的 form 表单" —— 都不用浏览器了,你怎么提交不是都可以么?直接 POST 走起,或者上 WebDAV 协议。除非你想要在网页上隐藏 form 表单偷偷上传?不要意思浏览器不允许那么做。
    fool079
        13
    fool079  
       2020-02-19 14:51:20 +08:00
    @TowerLi 用 form 表单只是表示 post 时的 body 是按照 form 的 enctype 类型来进行提交,你可以自己利用 FormData 来构造需要的内容,效果是一样的。只是前者简化了你的操作
    CEBBCAT
        14
    CEBBCAT  
       2020-02-19 14:58:21 +08:00   ❤️ 1
    @TowerLi #11 不要那么灰心丧气,你也没有 [错] ,初学者都是在 [试错] 。上传文件的本质是通过约定好的协议发送一个文件(这里是 HTTP(S)协议)。显然 form 表单是利用了 HTML 中的 form 结构,让浏览器发出符合约定的 HTTP 包。后端程序再按照约定好的数据包结构解析网络流量,最后将获得的文件内容该存的存,该计算的计算。

    我先后学习过 C、C#、Java、Python、Go 等语言,现在的工作主要使用 Go 语言,Spring 我也了解过一点点,国内确实非常流行,这意味着你能找到很多教程和能 Google 到别人的 [试错] 。

    我认为编程的难处不在于框架的学习,在于编程的思维。学习能力这东西,上帝有的给的多,有的给的少,我想你应该发掘自己的长处。

    我现在大四,远远担当不了你说的“大佬”,大家一起努力吧~
    pytth
        15
    pytth  
       2020-02-20 08:05:05 +08:00 via iPhone
    php curl 模拟表单提交
    zjyl1994
        16
    zjyl1994  
       2020-02-20 09:46:34 +08:00
    可以考虑开一个 POST 接口,从 body 里读数据写到硬盘里。https 的话,看 webserver 怎么配置就好了,和你程序部分没关系
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3924 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 10:26 · PVG 18:26 · LAX 03:26 · JFK 06:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.