| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- <?php
- // (a) helper function - server response
- function verbose($ok = 1, $info = "")
- {
- if ($ok == 0) {
- http_response_code(400);
- }
- exit(json_encode(["ok" => $ok, "info" => $info]));
- }
- // (b) invalid upload
- if (empty($_FILES) || $_FILES["file"]["error"]) {
- verbose(0, "Failed to move uploaded file.");
- }
- // (c) upload destination - change folder if required!
- $filePath = __DIR__ . DIRECTORY_SEPARATOR . "uploads";
- /*if (!file_exists($filePath)) {
- if (!mkdir($filePath, 0777, true)) {
- verbose(0, "Failed to create $filePath");
- }
- }*/
- $fileName = isset($_REQUEST["name"])
- ? $_REQUEST["name"]
- : $_FILES["file"]["name"];
- $filePath = $filePath . DIRECTORY_SEPARATOR . $fileName;
- // (d) deal with chunks
- $chunk = isset($_REQUEST["chunk"]) ? intval($_REQUEST["chunk"]) : 0;
- $chunks = isset($_REQUEST["chunks"]) ? intval($_REQUEST["chunks"]) : 0;
- $out = @fopen("{$filePath}.part", $chunk == 0 ? "wb" : "ab");
- if ($out) {
- $in = @fopen($_FILES["file"]["tmp_name"], "rb");
- if ($in) {
- while ($buff = fread($in, 4096)) {
- fwrite($out, $buff);
- }
- } else {
- verbose(0, "Failed to open input stream");
- }
- @fclose($in);
- @fclose($out);
- @unlink($_FILES["file"]["tmp_name"]);
- } else {
- verbose(0, "Failed to open output stream");
- }
- // (e) check if file has been uploaded
- if (!$chunks || $chunk == $chunks - 1) {
- rename("{$filePath}.part", $filePath);
- }
- verbose(1, "Upload OK");
- ?>
|