public function chunkCheck()
 {
     $config = new \Flow\Config();
     $config->setTempDir($this->tmpDir);
     $file = new \Flow\FileReadable($config);
     if ($file->checkChunk()) {
         return response('', Response::HTTP_OK);
         // 200
     }
     return response('', Response::HTTP_NO_CONTENT);
     // 204
 }
Пример #2
0
<?php

require_once './vendor/autoload.php';
$config = new \Flow\Config();
$config->setTempDir('./chunks_temp_folder');
$request = new \Flow\Request();
if (\Flow\Basic::save('./' . $request->getIdentifier(), $config, $request)) {
    // file saved successfully and can be accessed at './final_file_destination'
} else {
    // This is not a final chunk or request is invalid, continue to upload.
}
Пример #3
0
<?php

//Path to Autoloader.php from current location
require_once './LIB/Flow/Autoloader.php';
Flow\Autoloader::register();
// include logging
include 'logging.php';
$log = Logger::getLogger("media_upload");
$config = new Flow\Config();
$config->setTempDir('./temp');
$request = new Flow\Request();
if (Flow\Basic::save('../../mud_app_upload/' . $request->getRelativePath(), $config, $request)) {
    $log->info($request->getTotalSize());
    $log->info($request);
    //$log->info($request->file["type"]);
    $log->info($request->file['type']);
    //$log->info($config);
} else {
    // This is not a final chunk or request is invalid, continue to upload.
}
Пример #4
0
 public function adminUploadGalleryFilePost($upload_dir)
 {
     $upload_dir = str_replace(['..', '/', '\\'], '-', $upload_dir);
     $temp_dir = '../storage/app/temp/' . $this->getRoutePrefix() . '/' . $upload_dir;
     if (!file_exists($temp_dir)) {
         // create dir, but suppress possible errors
         // since we're checking for dir existance, errors should occur, but they do,
         //    because of concurrent requests (request A notices this dir doesn't exist yet,
         //    but before it can create it, request B does so; so when request A tries to create it,
         //    it fails miserably)
         @mkdir($temp_dir, 0777, true);
     }
     $config = new \Flow\Config();
     $config->setTempDir($temp_dir);
     $file = new \Neonbug\Gallery\Models\FlowFile($config);
     if ($file->validateChunk()) {
         $file->saveChunk();
     } else {
         // error, invalid chunk upload request, retry
         header('HTTP/1.1 400 Bad Request');
         exit;
     }
     if ($file->validateFile()) {
         // file upload was completed
         $dir = 'uploads/' . $this->getRoutePrefix() . '/temp/' . $upload_dir;
         $filename = str_replace(['..', '/', '\\'], '-', $file->getFileName());
         //very basic filename validation
         if (!file_exists($dir)) {
             // create dir, but suppress possible errors
             // since we're checking for dir existance, errors should occur, but they do,
             //    because of concurrent requests (request A notices this dir doesn't exist yet,
             //    but before it can create it, request B does so; so when request A tries to create it,
             //    it fails miserably)
             @mkdir($dir, 0777, true);
         }
         if (!$file->save($dir . '/' . $filename)) {
             //TODO throw an error or sth
         }
     } else {
         // this is not a final chunk, continue to upload
     }
 }
Пример #5
0
function api_all_upload($app, $media_id = '', $suffix = '')
{
    $user = $app->auth->getUser();
    $baseDir = dirname(__DIR__);
    $fd = $user['user_id'];
    $is_photo = false;
    if ($media_id == 'photo') {
        $fd = 'photos';
        $is_photo = true;
    }
    $uploadsDir = dirname($baseDir) . '/uploads/' . $fd . '/';
    $chunksDir = dirname($baseDir) . '/.chunks/' . $fd . '/';
    require $baseDir . '/Flow/Autoloader.php';
    Flow\Autoloader::register($baseDir);
    $config = new Flow\Config();
    $config->setTempDir($chunksDir);
    $file = new Flow\File($config);
    if ($_SERVER['REQUEST_METHOD'] === 'GET') {
        if (!is_dir($uploadsDir)) {
            @mkdir(dirname($uploadsDir));
            @mkdir($uploadsDir);
        }
        if (!is_dir($chunksDir)) {
            @mkdir(dirname($chunksDir));
            @mkdir($chunksDir);
        }
        if ($file->checkChunk()) {
            header($_SERVER["SERVER_PROTOCOL"] . " 200 Ok");
        } else {
            header($_SERVER["SERVER_PROTOCOL"] . " 204 No Content");
            exit;
        }
    } else {
        if ($file->validateChunk()) {
            $file->saveChunk();
        } else {
            // error, invalid chunk upload request, retry
            header($_SERVER["SERVER_PROTOCOL"] . " 400 Bad Request");
            exit;
        }
    }
    $media_file = strtolower($file->getFileName());
    $profile = $media_id == 'photo';
    if ($media_id) {
        if ($suffix) {
            $suffix = '.' . $suffix;
        }
        if ($profile) {
            $media_file = $user['user_id'] . '.' . pathinfo($media_file)['extension'];
        } else {
            $media_file = md5($media_id) . $suffix . '.' . pathinfo($media_file)['extension'];
        }
    }
    if ($is_photo) {
        //update user
        $u = $app->orm->user()->where('user_id', $user['user_id'])->fetch();
        if ($u) {
            $u->update(array('date_modified' => new NotORM_Literal("NOW()")));
        }
    } else {
        if ($media_id) {
            $u = $app->orm->media()->where('media_id', $media_id)->fetch();
            if ($u) {
                $u->update(array('date_modified' => new NotORM_Literal("NOW()")));
            }
        }
    }
    $media_file = preg_replace('/\\.php$/', '.php._', $media_file);
    if ($file->validateFile() && $file->save($uploadsDir . $media_file)) {
        if ($profile) {
            resize_image($uploadsDir . $media_file, $uploadsDir . $user['user_id'] . '.jpg', 120);
            if ($media_file != $user['user_id'] . '.jpg') {
                @unlink($uploadsDir . $media_file);
                $media_file = $user['user_id'] . '.jpg';
            }
        } else {
            if ($suffix) {
                resize_image($uploadsDir . $media_file);
                create_thumbnail($uploadsDir . $media_file);
            }
        }
        echo $media_file;
        $files = glob($chunksDir . '*');
        foreach ($files as $file) {
            if (is_file($file)) {
                @unlink($file);
            }
        }
    } else {
        echo "ไฟล์ยังอัพโหลดไม่สมบูรณ์";
    }
}
Пример #6
0
function all_upload($id = '0', $doc = '')
{
    global $api;
    global $norm;
    $api->api_check_user();
    $usr = $api->api_get_user();
    $rs = $norm->cases()->where('id', $id)->where('user_id', $usr['id']);
    $ok = count($rs) > 0 && ($doc == 'file1' || $doc == 'file2');
    if (!$ok) {
        // error, invalid chunk upload request, retry
        header($_SERVER["SERVER_PROTOCOL"] . " 400 Bad Request");
        exit;
    }
    $baseDir = dirname(__DIR__);
    $uploadsDir = dirname($baseDir) . '/documents/' . $usr['id'] . '/';
    $chunksDir = dirname($baseDir) . '/.chunks/' . $usr['id'] . '/';
    require $baseDir . '/Flow/Autoloader.php';
    Flow\Autoloader::register($baseDir);
    $config = new Flow\Config();
    $config->setTempDir($chunksDir);
    $file = new Flow\File($config);
    if ($_SERVER['REQUEST_METHOD'] === 'GET') {
        if (!is_dir($uploadsDir)) {
            @mkdir(dirname($uploadsDir));
            @mkdir($uploadsDir);
        }
        if (!is_dir($chunksDir)) {
            @mkdir(dirname($chunksDir));
            @mkdir($chunksDir);
        }
        if ($file->checkChunk()) {
            header($_SERVER["SERVER_PROTOCOL"] . " 200 Ok");
        } else {
            header($_SERVER["SERVER_PROTOCOL"] . " 204 No Content");
            exit;
        }
    } else {
        if ($file->validateChunk()) {
            $file->saveChunk();
        } else {
            // error, invalid chunk upload request, retry
            header($_SERVER["SERVER_PROTOCOL"] . " 400 Bad Request");
            exit;
        }
    }
    $row = $rs->fetch();
    $filename = strtolower($file->getFileName());
    $filename = preg_replace('/[^a-zA-Z0-9_\\.]/', '_', $filename);
    if ($doc) {
        $filename = strtolower($doc . '-' . $filename);
    }
    $filename = $usr['id'] . '-' . $row['id'] . '-' . $filename;
    $filename = str_replace('-', '_', $filename);
    if ($file->validateFile() && $file->save($uploadsDir . $filename)) {
        $it = array();
        $it[$doc] = $filename;
        $row->update($it);
        echo "File upload was completed ";
        echo $filename;
    } else {
        echo "This is not a final chunk, continue to upload";
    }
    exit;
}
Пример #7
0
<?
require_once './vendor/Flow/Autoloader.php';
require_once 'dbfunctions.php';
require_once 'fileparams.php';
Flow\Autoloader::register();

$config = new \Flow\Config();
$config->setTempDir($chunkFolder);
$file = new \Flow\File($config);
$request = new \Flow\Request();

function getImgExtension($fname){
	preg_match("/^.*\.(jpg|jpeg|png|gif)$/i", $fname, $out);
	return strtolower($out[1]);
}

if ($_SERVER['REQUEST_METHOD'] === 'GET') {
    if ($file->checkChunk()) {
        header("HTTP/1.1 200 Ok");
    } else {
        header("HTTP/1.1 204 No Content");
        return ;
    }
} else {
  if ($file->validateChunk()) {
      $file->saveChunk();
  } else {
      // error, invalid chunk upload request, retry
      header("HTTP/1.1 400 Bad Request");
      return ;
  }