V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
zgcwkj
V2EX  ›  分享创造

文件分享网站(快传)

  •  
  •   zgcwkj ·
    zgcwkj · 2019-09-11 23:14:30 +08:00 · 4912 次点击
    这是一个创建于 1682 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本人不会 PHP 框架,所以直接码代码了,大神轻打

    模仿这个网站做的, 文件空投

    简单的实现了一遍,因为就是文件上传,文件秘钥下载。

    PHP 的源码,我没用数据库,因为想着简单的实现,就用 Json 存储了。

    使用到的开源项目:https://github.com/fising/big-file-uploader (因为支持分片和大文件上传,懒得写一遍了~)

    我加的源码:

    <?php
    
    header('Content-type:text/json'); // 规定返回的内容是 Json 数据
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        $jaonDataName = 'files/data.json';
        // 文件存储位置
        $filePath = getPath();
        // 从文件中读取数据到 PHP 变量
        $json_string = file_get_contents($jaonDataName);
        // 把 JSON 字符串转成 PHP 数组
        $datas = json_decode($json_string, true);
        // 显示出来看看
        // echo var_dump($datas);
        if (isset($_REQUEST['key'])) {
            foreach ($datas as $key => $value) {
                if (in_array($_REQUEST['key'], $value)) {
                    echo json_encode([
                        'status'  => 0,
                        'message' => $value
                    ]);
                    exit();
                }
            }
            echo json_encode([
                'status'  => 1,
                'message' => '文件不存在'
            ]);
        } else {
            //保存上传的文件
            $return = saveFile($filePath);
            //文件保存成功
            if ($return['status'] == 0) {
                $name = isset($_POST['name']) ? trim($_POST['name']) : '';
                // 添加新的数据
                array_push($datas, array('key' => $return['key'], 'value' => $filePath . DIRECTORY_SEPARATOR . $return['name']));
                // 把 PHP 数组转成 JSON 字符串
                $json_string = json_encode($datas);
                // 写入文件
                file_put_contents($jaonDataName, $json_string);
            }
            // 输出到界面
            echo json_encode($return);
        }
    }
    

    详细看我博客:文件快传网站及源码

    我怕大神说我骗访问量,所以我直接贴上源码下载地址吧!

    网站源码下载:PHPUpLoad.7z

    第 1 条附言  ·  2020-10-08 01:03:27 +08:00
    9 条回复    2019-09-15 09:22:34 +08:00
    dewi
        1
    dewi  
       2019-09-12 01:00:31 +08:00 via iPhone
    支持!
    kingfalse
        2
    kingfalse  
       2019-09-12 08:24:13 +08:00 via Android
    跟 Firefox Send 相比有什么优点?
    vazo
        3
    vazo  
       2019-09-12 10:08:52 +08:00
    棒!
    zgcwkj
        4
    zgcwkj  
    OP
       2019-09-12 13:29:49 +08:00
    @kingfalse #2 优点部署简单,文件时放在你的服务器上面的,而且你也可以改源码~
    Deteriorator
        5
    Deteriorator  
       2019-09-12 14:33:31 +08:00
    上传了 git 安装包,提示:文件上传错误
    zgcwkj
        6
    zgcwkj  
    OP
       2019-09-12 15:26:21 +08:00
    @Deteriorator #5 确实是上传错误,可能是源码本身有问题吧~也可能是大文件什么的,,,
    googlefans
        7
    googlefans  
       2019-09-12 20:28:17 +08:00
    不错支持
    hyserendipity
        8
    hyserendipity  
       2019-09-15 09:09:44 +08:00 via iPhone   ❤️ 1
    两个问题,一个是最大支持传多大的文件,二是文件存储在哪,安全性如何保障
    zgcwkj
        9
    zgcwkj  
    OP
       2019-09-15 09:22:34 +08:00
    @hyserendipity #8
    1、文件大小是没有上限的。至于有些文件上传不了,可能是源代码问题(后期我会把它修复了)
    2、文件保存到我的服务器中,如果害怕安全保障不了的,可以尝试部署到自己的服务器中

    第一、我能确保,我的 MD5 不会泄露。
    第二、就算 MD5 被计算出来了,也有可能文件被删除了。
    第三、我敢保证,我不会去看一样里面的文件,随手删除文件夹。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2649 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 11:37 · PVG 19:37 · LAX 04:37 · JFK 07:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.