public function upload($data)
{
if ($this->app->user_manager->is_admin() == false) {
mw_error('not logged in as admin');
}
ini_set('upload_max_filesize', '2500M');
ini_set('memory_limit', '256M');
ini_set('max_execution_time', 0);
ini_set('post_max_size', '2500M');
ini_set('max_input_time', 9999999);
// ini_set("session.upload_progress.enabled", 1);
if (isset($_SERVER['HTTP_REFERER'])) {
$ref_str = md5($_SERVER['HTTP_REFERER']);
} else {
$ref_str = 'no_HTTP_REFERER';
}
$ref_str = 'no_HTTP_REFERER';
$cache_id = 'upload_progress_' . $ref_str;
$cache_group = 'media/global';
$target_path = media_base_path() . 'uploaded' . DS;
$target_path = normalize_path($target_path, 1);
if (!is_dir($target_path)) {
mkdir_recursive($target_path);
}
$rerturn = array();
if ((!isset($_FILES) or empty($_FILES)) and isset($data['file'])) {
if (isset($data['name'])) {
$f = $target_path . $data['name'];
if (is_file($f)) {
$f = $target_path . date('YmdHis') . $data['name'];
}
$df = strpos($data['file'], 'base64,');
if ($df != false) {
// $df = substr($data['file'], 0, $df);
$data['file'] = substr($data['file'], $df + 7);
$data['file'] = str_replace(' ', '+', $data['file']);
// d($data['file']);
}
$up = $this->base64_to_file($data['file'], $f);
$rerturn['src'] = $this->app->url_manager->link_to_file($f);
$rerturn['name'] = $data['name'];
return json_encode($rerturn);
}
} else {
$allowedExts = array('jpg', 'jpeg', 'gif', 'png', 'bmp');
//$upl = $this->app->cache_manager->save($_FILES, $cache_id, $cache_group);
foreach ($_FILES as $item) {
$extension = end(explode('.', $item['name']));
if (in_array($extension, $allowedExts)) {
if ($item['error'] > 0) {
mw_error('Error: ' . $item['error']);
} else {
$upl = $this->app->cache_manager->save($item, $cache_id, $cache_group);
$f = $target_path . $item['name'];
if (is_file($f)) {
$f = $target_path . date('YmdHis') . $item['name'];
}
$progress = (array) $item;
$progress['f'] = $f;
$upl = $this->app->cache_manager->save($progress, $cache_id, $cache_group);
if (move_uploaded_file($item['tmp_name'], $f)) {
$rerturn['src'] = $this->app->url_manager->link_to_file($f);
$rerturn['name'] = $item['name'];
}
}
} else {
mw_error('Invalid file ext');
}
//
// $input = fopen("php://input", "r");
// $temp = tmpfile();
//
// $realSize = stream_copy_to_stream($input, $temp);
// fclose($input);
//
//
//
//
// $target = fopen($f, "w");
// fseek($temp, 0, SEEK_SET);
// stream_copy_to_stream($temp, $target);
// $rerturn['src'] = $this->app->url_manager->link_to_file($f);
// $rerturn['name'] = $item['name'];
// fclose($target);
}
}
exit(json_encode($rerturn));
}