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

文件分享网站(快传)

  •  
  •   zgcwkj · 4 天前 · 1249 次点击

    本人不会 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

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

    第一、我能确保,我的 MD5 不会泄露。
    第二、就算 MD5 被计算出来了,也有可能文件被删除了。
    第三、我敢保证,我不会去看一样里面的文件,随手删除文件夹。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4080 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 19ms · UTC 02:22 · PVG 10:22 · LAX 19:22 · JFK 22:22
    ♥ Do have faith in what you're doing.