nginx 1.5+文件上传 - 最佳实践

Jay*_*Nyc 55 file-upload nginx

我想通过我的nginx服务器上传文件.我现在正在跑步,nginx-1.4.6并愿意nginx-1.5*在必要时搬到最新的马厩.

社区最喜欢的是Valery Kholodkov nginx-upload-module,在这里找到.令人遗憾的是,Valery不再维护此模块,详情请参见此处.截至nginx-1.3.9该模块部分工作或根本不工作.

我已经编译nginx-upload-module成了nginx-1.4.6一个错误(客户端cxn已关闭),它似乎已在nginx-1.5.3 变更集中得到修复.但是我已经应用了补丁并没有运气.

阿纳托利的稍微过时的帖子,在这里,提供了多种解决方案,包括四个解决方案

当我深入研究第二和第四个解决方案时(我不想做出lua依赖,但我可能会这样做)我认为问这个社区是合适的:

目前文件上传的最佳做法是nginx-1.5+什么?

让我补充一点,我正在从python POST命令上传文件并尝试使用curl.PHP不在我的技术堆栈上.

小智 -8

只是一个快速草稿,但试试这个......

Upload.php
if (isset($_FILES['dlc_file']) && !empty($_FILES['dlc_file'])) {
    if (empty($_FILES['dlc_file']['name']) === true) {
        echo = "Please choose a file to upload";
    } else {
        $allowed = array('zip', 'rar', 'gzip', 'tar', '7z', 'png', 'jpg');

        $file_name = $_FILES['dlc_file']['name'];
        $file_extn = strtolower(end(explode('.', $file_name)));
        $file_temp = $_FILES['dlc_file']['tmp_name'];

        if (in_array($file_extn, $allowed) === true) {
            $file_path = 'dlc/' . substr(md5(time()), 0, 10) . '.' . $file_extn;
            move_uploaded_file($file_temp, $file_path);
            echo = "Successfully uploaded $file_name";
        } else {
            $file_types = implode(', ', $allowed);
            echo "File type is not allowed, Allowed file types $file_types";
        }
    }
}

index.php
<form action="upload.php" method="post" enctype="multipart/form-data>
    <input type="file" name="dlc_file">
    <input type="submit" name="submit" value="Upload">
</form>
Run Code Online (Sandbox Code Playgroud)

  • 这段代码有什么帮助?OP 并不是在寻找 PHP 解决方案(他明确表示 PHP 不是他的堆栈的一部分),而是询问当前使用 Nginx 1.5+ 上传文件的最佳实践是什么。 (9认同)