PHP入门

作者: 小桥流水啦啦啦 | 来源:发表于2020-03-08 11:12 被阅读0次

    PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。PHP 是免费的,并且使用广泛。学习服务器端脚本语言首选PHP。
    

    PHP 文件打开/读取/读取/创建/写入

    下面这个脚本摘自于plupload-2.13源码中的demo。
    

    <?php
    /**

    !! IMPORTANT:

    !! this file is just an example, it doesn't incorporate any security checks and

    !! is not recommended to be used in production environment as it is. Be sure to

    !! revise it and customize to your needs.

    // Make sure file is not cached (as it happens for example on iOS devices)
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
    header("Cache-Control: no-store, no-cache, must-revalidate");
    header("Cache-Control: post-check=0, pre-check=0", false);
    header("Pragma: no-cache");

    /*
    // Support CORS
    header("Access-Control-Allow-Origin: *");
    // other CORS headers if any...
    if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
    exit; // finish preflight CORS requests here
    }
    */

    // 5 minutes execution time
    @set_time_limit(5 * 60);

    // Uncomment this one to fake upload time
    // usleep(5000);

    // Settings
    targetDir = ini_get("upload_tmp_dir") . DIRECTORY_SEPARATOR . "plupload"; //targetDir = 'uploads';
    cleanupTargetDir = true; // Remove old filesmaxFileAge = 5 * 3600; // Temp file age in seconds

    /*
    服务器端接受plupload上传的文件,保存在临时目录的最长时间是$maxFileAge;时间到这个文件自动删除;
    */

    // Create target dir
    if (!file_exists(targetDir)) { @mkdir(targetDir);
    }

    // Get a file name
    if (isset(_REQUEST["name"])) {fileName = _REQUEST["name"]; } elseif (!empty(_FILES)) {
    fileName =FILES["file"]["name"];
    } else {
    $fileName = uniqid("file
    ");
    }

    filePath =targetDir . DIRECTORY_SEPARATOR . $fileName;

    // Chunking might be enabled
    chunk = isset(_REQUEST["chunk"]) ? intval(_REQUEST["chunk"]) : 0;chunks = isset(_REQUEST["chunks"]) ? intval(_REQUEST["chunks"]) : 0;

    // Remove old temp files
    if (cleanupTargetDir) { if (!is_dir(targetDir) || !dir = opendir(targetDir)) {
    die('{"jsonrpc" : "2.0", "error" : {"code": 100, "message": "Failed to open temp directory."}, "id" : "id"}');
    }

    while ((file = readdir(dir)) !== false) {
    tmpfilePath =targetDir . DIRECTORY_SEPARATOR . $file;

    // If temp file is current file proceed to the next
    if (tmpfilePath == "{filePath}.part") {
    continue;
    }

    // Remove temp file if it is older than the max age and is not the current file
    if (preg_match('/.part/',file) && (filemtime(tmpfilePath) < time() -maxFileAge)) {
    @unlink(tmpfilePath); } } closedir(dir);
    }

    // Open temp file
    if (!out = @fopen("{filePath}.part", $chunks ? "ab" : "wb")) {
    die('{"jsonrpc" : "2.0", "error" : {"code": 102, "message": "Failed to open output stream."}, "id" : "id"}');
    }

    if (!empty(_FILES)) { if (_FILES["file"]["error"] || !is_uploaded_file($_FILES["file"]["tmp_name"])) {
    die('{"jsonrpc" : "2.0", "error" : {"code": 103, "message": "Failed to move uploaded file."}, "id" : "id"}');
    }

    // Read binary input stream and append it to temp file
    if (!in = @fopen(_FILES["file"]["tmp_name"], "rb")) {
    die('{"jsonrpc" : "2.0", "error" : {"code": 101, "message": "Failed to open input stream."}, "id" : "id"}');
    }
    } else {
    if (!$in = @fopen("php://input", "rb")) {
    die('{"jsonrpc" : "2.0", "error" : {"code": 101, "message": "Failed to open input stream."}, "id" : "id"}');
    }
    }

    while (buff = fread(in, 4096)) {
    fwrite(out,buff);
    }

    @fclose(out); @fclose(in);

    // Check if file has been uploaded
    if (!chunks ||chunk == chunks - 1) { // Strip the temp .part suffix off rename("{filePath}.part", $filePath);
    }

    // Return Success JSON-RPC response
    die('{"jsonrpc" : "2.0", "result" : null, "id" : "id"}');

    相关文章

      网友评论

          本文标题:PHP入门

          本文链接:https://www.haomeiwen.com/subject/krhddhtx.html