public function indexAction() { $messages = array(); $form = new BootstrapForm('bootstrap'); if ($this->request->isPost()) { $post = $this->request->getPost(); $form->setData($post); $messages[] = _a('Form submitted successfully.'); //$rename = 'demo_for_upload_%random%'; $rename = function ($name) { //$extension = pathinfo($name, PATHINFO_EXTENSION); $name = 'test_for_upload_' . $name; return $name; }; $uploader = new Upload(array('rename' => $rename)); $uploader->setExtension('jpg,png,gif,txt,zip,rar'); //->setRename('tmp.%random%'); //->setImageSize(array('maxWidth' => 600, 'maxHeight' => 500)); if ($uploader->isValid()) { $uploader->receive(); $file = $uploader->getUploaded('upload_demo'); $messages[] = sprintf(_a('File uploaded and saved as %s'), $file); } } $this->view()->assign(array('form' => $form, 'messages' => $messages)); }
/** * Process upload image by AJAX */ public function uploadAction() { Pi::service('log')->mute(); $module = $this->getModule(); $config = Pi::config('', $module); $return = array('status' => false); $fakeId = $this->params('fake_id', 0); // Checking whether ID is empty if (empty($fakeId)) { $return['message'] = _a('Invalid fake ID!'); echo json_encode($return); exit; } $rawInfo = $this->request->getFiles('upload'); // Rename $ext = strtolower(pathinfo($rawInfo['name'], PATHINFO_EXTENSION)); $rename = $fakeId . '.' . $ext; // Get path to store $destination = Media::getTargetDir('author', $module, true, false); $uploader = new UploadHandler(array('destination' => Pi::path($destination), 'rename' => $rename)); $uploader->setExtension($config['image_extension'])->setSize($config['max_media_size']); // Checking whether uploaded file is valid if (!$uploader->isValid()) { $return['message'] = implode(', ', $uploader->getMessages()); echo json_encode($return); exit; } $uploader->receive(); $fileName = $destination . '/' . $rename; // Resolve allowed image extension $imageSize = array(); $imageSizeRaw = getimagesize(Pi::path($fileName)); $imageSize['w'] = $imageSizeRaw[0]; $imageSize['h'] = $imageSizeRaw[1]; $uploadInfo = array('tmp_name' => $fileName, 'w' => $imageSize['w'], 'h' => $imageSize['h']); // Save info to session $session = Media::getUploadSession($module, 'author'); $session->{$fakeId} = $uploadInfo; // Prepare return data $return['data'] = array_merge(array('originalName' => $rawInfo['name'], 'size' => $rawInfo['size'], 'preview_url' => Pi::url($fileName), 'basename' => basename($fileName), 'type' => $ext, 'id' => $fakeId, 'filename' => $fileName), $imageSize); $return['status'] = true; echo json_encode($return); exit; }
/** * Processing media uploaded. */ public function uploadAction() { Pi::service('log')->mute(); $module = $this->getModule(); $config = Pi::config('', $module); $return = array('status' => false); $id = $this->params('id', 0); $fakeId = $this->params('fake_id', 0) ?: uniqid(); $type = $this->params('type', 'attachment'); $formName = $this->params('form_name', 'upload'); // Checking whether ID is empty if (empty($id) && empty($fakeId)) { $return['message'] = _a('Invalid ID!'); return json_encode($return); exit; } $width = $this->params('width', 0); $height = $this->params('height', 0); $rawInfo = $this->request->getFiles($formName); $ext = strtolower(pathinfo($rawInfo['name'], PATHINFO_EXTENSION)); $rename = $id ?: $fakeId . '.' . $ext; $allowedExtension = $type == 'image' ? $config['image_extension'] : $config['media_extension']; $mediaSize = $type == 'image' ? $config['max_image_size'] : $config['max_media_size']; $destination = Media::getTargetDir('media', $module, true, true); $uploader = new UploadHandler(array('destination' => Pi::path($destination), 'rename' => $rename)); $uploader->setExtension($allowedExtension)->setSize($mediaSize); // Get raw file name $rawName = null; if (empty($rawInfo)) { $content = $this->request->getContent(); preg_match('/filename="(.+)"/', $content, $matches); $rawName = $matches[1]; } // Checking whether uploaded file is valid if (!$uploader->isValid($rawName)) { $return['message'] = implode(', ', $uploader->getMessages()); echo json_encode($return); exit; } $uploader->receive(); $fileName = $destination . '/' . $rename; $rawName = $rawName ?: substr($rawInfo['name'], 0, strrpos($rawInfo['name'], '.')); // Resolve allowed image extension $imageExt = explode(',', $config['image_extension']); foreach ($imageExt as &$value) { $value = strtolower(trim($value)); } // Scale image if file is image file $uploadInfo['tmp_name'] = $fileName; $uploadInfo['raw_name'] = $rawName; $imageSize = array(); if (in_array($ext, $imageExt)) { $scaleImageSize = $this->scaleImageSize(Pi::path($fileName), $config); $uploadInfo['w'] = $width ?: $scaleImageSize['w']; $uploadInfo['h'] = $height ?: $scaleImageSize['h']; Media::saveImage($uploadInfo); $imageSizeRaw = getimagesize(Pi::path($fileName)); $imageSize['w'] = $imageSizeRaw[0]; $imageSize['h'] = $imageSizeRaw[1]; } // Save uploaded media if ($id) { $row = $this->getModel('media')->find($id); if ($row->url && $row->url != $fileName) { unlink(Pi::path($row->url)); } $row->url = $fileName; $row->type = $ext; $row->size = filesize(Pi::path($fileName)); $row->meta = json_encode($imageSize); $row->save(); } else { // Or save info to session $session = Media::getUploadSession($module, 'media'); $session->{$fakeId} = $uploadInfo; } // Prepare return data $return['data'] = array_merge(array('originalName' => $rawInfo['name'], 'size' => $rawInfo['size'], 'preview_url' => Pi::url($fileName), 'basename' => basename($fileName), 'type' => $ext, 'id' => $id ?: $fakeId, 'filename' => $fileName), $imageSize); $return['status'] = true; echo json_encode($return); exit; }
public function uploadAction() { //Pi::service('log')->mute(); $return = array('status' => 1, 'message' => '', 'image' => ''); $rename = $this->tmpPrefix . '%random%'; /**#@+ * Just for demo for anonymous callback */ /* $rename = function ($name) { $pos = strrpos($name, '.'); if (false !== $pos) { $extension = substr($name, $pos); $name = substr($name, 0, $pos); } else { $extension = ''; } $newName = $name . '.random-' .uniqid() . '.' . $extension; return $newName; }; */ /**#@-*/ $uploader = new Upload(array('rename' => $rename)); $uploader->setExtension('jpg,png,gif'); //->setRename('tmp.%random%'); //->setImageSize(array('maxWidth' => 600, 'maxHeight' => 500)); if ($uploader->isValid()) { $uploader->receive(); $file = $uploader->getUploaded('image'); $return['image'] = $file; } else { $messages = $uploader->getMessages(); $return = array('status' => 0, 'message' => implode('; ', $messages)); } return $return; }