public function addFile(array $fileInfo = array(), UploadedFile $originalFile = null) { $errors = FileToolkit::validateFileExtension($originalFile); if ($errors) { @unlink($originalFile->getRealPath()); throw $this->createServiceException("该文件格式,不允许上传。"); } $uploadFile = array(); $uploadFile['storage'] = 'local'; $uploadFile['filename'] = $originalFile->getClientOriginalName(); $uploadFile['ext'] = FileToolkit::getFileExtension($originalFile); $uploadFile['size'] = $originalFile->getSize(); $filename = FileToolkit::generateFilename($uploadFile['ext']); $uploadFile['hashId'] = "course/{$filename}"; $uploadFile['convertHash'] = "ch-{$uploadFile['hashId']}"; $uploadFile['convertStatus'] = 'none'; $uploadFile['type'] = FileToolkit::getFileTypeByExtension($uploadFile['ext']); $uploadFile['isPublic'] = empty($fileInfo['isPublic']) ? 0 : 1; $uploadFile['canDownload'] = empty($uploadFile['canDownload']) ? 0 : 1; $uploadFile['updatedUserId'] = $uploadFile['createdUserId'] = $this->getCurrentUser()->id; $uploadFile['updatedTime'] = $uploadFile['createdTime'] = time(); $targetPath = $this->getFilePath('course', $uploadFile['isPublic']); $originalFile->move($targetPath, $filename); return $uploadFile; }
public function addFile($targetType, $targetId, array $fileInfo = array(), UploadedFile $originalFile = null) { if (!ArrayToolkit::requireds($fileInfo, array('filename', 'key', 'size'))) { throw $this->createServiceException('参数缺失,添加用户文件失败!'); } $uploadFile = array(); $uploadFile['targetId'] = $targetId; $uploadFile['targetType'] = $targetType; $uploadFile['hashId'] = $fileInfo['key']; $uploadFile['filename'] = $fileInfo['filename']; $uploadFile['ext'] = pathinfo($uploadFile['filename'], PATHINFO_EXTENSION); $uploadFile['size'] = (int) $fileInfo['size']; $uploadFile['etag'] = empty($fileInfo['etag']) ? '' : $fileInfo['etag']; $uploadFile['length'] = empty($fileInfo['length']) ? 0 : intval($fileInfo['length']); $uploadFile['metas'] = $this->encodeMetas(empty($fileInfo['metas']) ? array() : $fileInfo['metas']); $uploadFile['metas2'] = $this->encodeMetas(empty($fileInfo['metas2']) ? array() : $fileInfo['metas2']); if (empty($fileInfo['convertHash'])) { $uploadFile['convertHash'] = "ch-{$uploadFile['hashId']}"; $uploadFile['convertStatus'] = 'none'; $uploadFile['convertParams'] = ''; } else { $uploadFile['convertHash'] = "{$fileInfo['convertHash']}"; $uploadFile['convertStatus'] = 'waiting'; $uploadFile['convertParams'] = $fileInfo['convertParams']; } $uploadFile['type'] = FileToolkit::getFileTypeByMimeType($fileInfo['mimeType']); $uploadFile['canDownload'] = empty($uploadFile['canDownload']) ? 0 : 1; $uploadFile['storage'] = 'cloud'; $uploadFile['createdUserId'] = $this->getCurrentUser()->id; $uploadFile['updatedUserId'] = $uploadFile['createdUserId']; $uploadFile['updatedTime'] = $uploadFile['createdTime'] = time(); return $uploadFile; }
protected function createPrivateFileDownloadResponse(Request $request, $file) { $response = BinaryFileResponse::create($file['fullpath'], 200, array(), false); $response->trustXSendfileTypeHeader(); $file['filename'] = urlencode($file['filename']); if (preg_match("/MSIE/i", $request->headers->get('User-Agent'))) { $response->headers->set('Content-Disposition', 'attachment; filename="' . $file['filename'] . '"'); } else { $response->headers->set('Content-Disposition', "attachment; filename*=UTF-8''" . $file['filename']); } $mimeType = FileToolkit::getMimeTypeByExtension($file['ext']); if ($mimeType) { $response->headers->set('Content-Type', $mimeType); } return $response; }
public function approvalSubmitAction(Request $request) { $user = $this->getCurrentUser(); if ($request->getMethod() == 'POST') { $faceImg = $request->files->get('faceImg'); $backImg = $request->files->get('backImg'); if (!FileToolkit::isImageFile($backImg) || !FileToolkit::isImageFile($faceImg)) { return $this->createMessageResponse('error', '上传图片格式错误,请上传jpg, bmp,gif, png格式的文件。'); } $directory = $this->container->getParameter('topxia.upload.private_directory') . '/approval'; $this->getUserService()->applyUserApproval($user['id'], $request->request->all(), $faceImg, $backImg, $directory); $this->setFlashMessage('success', '实名认证提交成功!'); return $this->redirect($this->generateUrl('settings')); } return $this->render('TopxiaWebBundle:Settings:approval.html.twig', array()); }
public function consultUploadAction(Request $request) { $fileId = $request->request->get('id'); $objectFile = $this->getFileService()->getFileObject($fileId); if (!FileToolkit::isImageFile($objectFile)) { throw $this->createAccessDeniedException('图片格式不正确!'); } $file = $this->getFileService()->getFile($fileId); $parsed = $this->getFileService()->parseFileUri($file["uri"]); $consult = $this->getSettingService()->get('consult', array()); $consult['webchatURI'] = "{$this->container->getParameter('topxia.upload.public_url_path')}/" . $parsed["path"]; $consult['webchatURI'] = ltrim($consult['webchatURI'], '/'); $this->getSettingService()->set('consult', $consult); $this->getLogService()->info('system', 'update_settings', "更新微信二维码", array('webchatURI' => $consult['webchatURI'])); $response = array('path' => $consult['webchatURI'], 'url' => $this->container->get('templating.helper.assets')->getUrl($consult['webchatURI'])); return $this->createJsonResponse($response); }
public function consultUploadAction(Request $request) { $file = $request->files->get('consult'); if (!FileToolkit::isImageFile($file)) { throw $this->createAccessDeniedException('图片格式不正确!'); } $filename = 'webchat.' . $file->getClientOriginalExtension(); $directory = "{$this->container->getParameter('topxia.upload.public_directory')}/system"; $file = $file->move($directory, $filename); $consult = $this->getSettingService()->get('consult', array()); $consult['webchatURI'] = "{$this->container->getParameter('topxia.upload.public_url_path')}/system/{$filename}"; $consult['webchatURI'] = ltrim($consult['webchatURI'], '/'); $this->getSettingService()->set('consult', $consult); $this->getLogService()->info('system', 'update_settings', "更新微信二维码", array('webchatURI' => $consult['webchatURI'])); $response = array('path' => $consult['webchatURI'], 'url' => $this->container->get('templating.helper.assets')->getUrl($consult['webchatURI'])); return new Response(json_encode($response)); }
public function mobilePictureUploadAction(Request $request, $type) { $file = $request->files->get($type); if (!FileToolkit::isImageFile($file)) { throw $this->createAccessDeniedException('图片格式不正确!'); } $filename = 'mobile_picture' . time() . '.' . $file->getClientOriginalExtension(); $directory = "{$this->container->getParameter('topxia.upload.public_directory')}/system"; $file = $file->move($directory, $filename); $mobile = $this->getSettingService()->get('mobile', array()); $mobile[$type] = "{$this->container->getParameter('topxia.upload.public_url_path')}/system/{$filename}"; $mobile[$type] = ltrim($mobile[$type], '/'); $this->getSettingService()->set('mobile', $mobile); $this->getLogService()->info('system', 'update_settings', "更新网校{$type}图片", array($type => $mobile[$type])); $response = array('path' => $mobile[$type], 'url' => $this->container->get('templating.helper.assets')->getUrl($mobile[$type])); return new Response(json_encode($response)); }
public function uploadAction(Request $request) { list($groupCode, $type) = $this->tryUploadFile($request); if (!$this->isGroup($groupCode)) { return $this->createMessageResponse("error", "参数不正确"); } $file = $request->files->get('file'); if ($type == 'image') { if (!FileToolkit::isImageFile($file)) { throw new \RuntimeException("您上传的不是图片文件,请重新上传。"); } } else { throw new \RuntimeException("上传类型不正确!"); } $record = $this->getFileService()->uploadFile($groupCode, $file); $record['url'] = $this->get('topxia.twig.web_extension')->getFilePath($record['uri']); $request->getSession()->set("fileId", $record["id"]); return $this->createJsonResponse($record); }
public function pictureAction(Request $request, $id) { $course = $this->getCourseService()->tryManageCourse($id); if ($request->getMethod() == 'POST') { $file = $request->files->get('picture'); if (!FileToolkit::isImageFile($file)) { return $this->createMessageResponse('error', '上传图片格式错误,请上传jpg, gif, png格式的文件。'); } $filenamePrefix = "course_{$course['id']}_"; $hash = substr(md5($filenamePrefix . time()), -8); $ext = $file->getClientOriginalExtension(); $filename = $filenamePrefix . $hash . '.' . $ext; $directory = $this->container->getParameter('topxia.upload.public_directory') . '/tmp'; $file = $file->move($directory, $filename); $fileName = str_replace('.', '!', $file->getFilename()); return $this->redirect($this->generateUrl('course_manage_picture_crop', array('id' => $course['id'], 'file' => $fileName))); } return $this->render('TopxiaWebBundle:CourseManage:picture.html.twig', array('course' => $course)); }
public function uploadFile($group, File $file, $target = null) { $errors = FileToolkit::validateFileExtension($file); if ($errors) { @unlink($file->getRealPath()); throw $this->createServiceException("该文件格式,不允许上传。"); } $group = $this->getGroupDao()->findGroupByCode($group); $user = $this->getCurrentUser(); $record = array(); $record['userId'] = $user['id']; $record['groupId'] = $group['id']; // @todo fix it. $record['mime'] = ''; // $record['mime'] = $file->getMimeType(); $record['size'] = $file->getSize(); $record['uri'] = $this->generateUri($group, $file); $record['createdTime'] = time(); $record = $this->getFileDao()->addFile($record); $record['file'] = $this->saveFile($file, $record['uri']); return $record; }
public function validateExcelFile($file) { $errorMessage = ''; if (!is_object($file)) { $errorMessage = '请选择上传的文件'; return $errorMessage; } if (FileToolkit::validateFileExtension($file, 'xls xlsx')) { $errorMessage = 'Excel格式不正确!'; return $errorMessage; } $this->excelAnalyse($file); if ($this->rowTotal > 1000) { $message = 'Excel超过1000行数据!'; return $errorMessage; } if (!$this->checkNecessaryFields($this->excelFields)) { $message = '缺少必要的字段'; return $errorMessage; } return $errorMessage; }
public function pictureAction(Request $request, $id) { $gift = $this->getGiftService()->tryManageGift($id); if ($request->getMethod() == 'POST') { $reponse = array(); $file = $request->files->get('picture'); if (!FileToolkit::isImageFile($file)) { return $this->createMessageResponse('error', '上传图片格式错误,请上传jpg, gif, png格式的文件。'); } $filenamePrefix = "gift_{$gift['id']}_"; $hash = substr(md5($filenamePrefix . time()), -8); $ext = $file->getClientOriginalExtension(); $filename = $filenamePrefix . $hash . '.' . $ext; $directory = $this->container->getParameter('topxia.upload.public_directory') . '/tmp'; $file = $file->move($directory, $filename); $fileName = str_replace('.', '!', $file->getFilename()); $pictureFilePath = $this->container->getParameter('topxia.upload.public_directory') . '/tmp/' . $filename; $this->getGiftService()->changeGiftPicture($gift['id'], $pictureFilePath); return $this->createJsonResponse($pictureFilePath); } return $this->render('TopxiaAdminBundle:Gift:picture.html.twig', array('gift' => $gift)); }
public function uploadAction(Request $request) { try { $token = $request->query->get('token'); $maker = new UploadToken(); $token = $maker->parse($token); if (empty($token)) { throw new \RuntimeException("上传授权码已过期,请刷新页面后重试!"); } $file = $request->files->get('upload'); if ($token['type'] == 'image') { if (!FileToolkit::isImageFile($file)) { throw new \RuntimeException("您上传的不是图片文件,请重新上传。"); } } elseif ($token['type'] == 'flash') { $errors = FileToolkit::validateFileExtension($file, 'swf'); if (!empty($errors)) { throw new \RuntimeException("您上传的不是Flash文件,请重新上传。"); } } else { throw new \RuntimeException("上传类型不正确!"); } $record = $this->getFileService()->uploadFile($token['group'], $file); $funcNum = $request->query->get('CKEditorFuncNum'); $url = $this->get('topxia.twig.web_extension')->getFilePath($record['uri']); if ($token['type'] == 'image') { $response = "<script type='text/javascript'>window.parent.CKEDITOR.tools.callFunction({$funcNum}, '{$url}', function(){ this._.dialog.getParentEditor().insertHtml('<img src=\"{$url}\">'); this._.dialog.hide(); return false; });</script>"; } else { $response = "<script type='text/javascript'>window.parent.CKEDITOR.tools.callFunction({$funcNum}, '{$url}');</script>"; } return new Response($response); } catch (\Exception $e) { $message = $e->getMessage(); $funcNum = $request->query->get('CKEditorFuncNum'); $response = "<script type='text/javascript'>window.parent.CKEDITOR.tools.callFunction({$funcNum}, '', '{$message}');</script>"; return new Response($response); } }
public function defaultCoursePictureAction(Request $request) { $file = $request->files->get('picture'); if (!FileToolkit::isImageFile($file)) { return $this->createMessageResponse('error', '上传图片格式错误,请上传jpg, gif, png格式的文件。'); } $filenamePrefix = "coursePicture"; $hash = substr(md5($filenamePrefix . time()), -8); $ext = $file->getClientOriginalExtension(); $filename = $filenamePrefix . $hash . '.' . $ext; $defaultSetting = $this->getSettingService()->get('default', array()); $defaultSetting['defaultCoursePictureFileName'] = $filename; $this->getSettingService()->set("default", $defaultSetting); $directory = $this->container->getParameter('topxia.upload.public_directory') . '/tmp'; $file = $file->move($directory, $filename); $pictureFilePath = $directory . '/' . $filename; $imagine = new Imagine(); $image = $imagine->open($pictureFilePath); $naturalSize = $image->getSize(); $scaledSize = $naturalSize->widen(480)->heighten(270); $pictureUrl = $this->container->getParameter('topxia.upload.public_url_path') . '/tmp/' . $filename; return $this->render('TopxiaAdminBundle:System:default-course-picture-crop.html.twig', array('pictureUrl' => $pictureUrl, 'naturalSize' => $naturalSize, 'scaledSize' => $scaledSize)); }
public function addFile($targetType, $targetId, array $fileInfo = array(), UploadedFile $originalFile = null) { $errors = FileToolkit::validateFileExtension($originalFile); if ($errors) { @unlink($originalFile->getRealPath()); throw $this->createServiceException("该文件格式,不允许上传。"); } $uploadFile = array(); $time = time(); $uploadFile['storage'] = 'local'; $uploadFile['targetId'] = $targetId; $uploadFile['targetType'] = $targetType; $uploadFile['filename'] = $originalFile->getClientOriginalName(); //$uploadFile['filename'] = $time.$uploadFile['filename']; $uploadFile['ext'] = FileToolkit::getFileExtension($originalFile); $uploadFile['size'] = $originalFile->getSize(); $filename = FileToolkit::generateFilename($uploadFile['ext']); $uploadFile['hashId'] = "{$uploadFile['targetType']}/{$uploadFile['targetId']}/{$filename}"; $uploadFile['convertHash'] = "ch-{$uploadFile['hashId']}"; $uploadFile['convertStatus'] = 'none'; $uploadFile['type'] = FileToolkit::getFileTypeByExtension($uploadFile['ext']); $uploadFile['isPublic'] = empty($fileInfo['isPublic']) ? 0 : 1; $uploadFile['canDownload'] = empty($uploadFile['canDownload']) ? 0 : 1; $uploadFile['updatedUserId'] = $uploadFile['createdUserId'] = $this->getCurrentUser()->id; $uploadFile['updatedTime'] = $uploadFile['createdTime'] = time(); //$uploadFile['filePath'] = $this->getFilePath(); //throw new \RuntimeException(print_r('ssd')); //throw $this->createServiceException(print_r('ssd')); //$key = $uploadFile['filename']; //qiniu(); //转存上传临时文件到资源文件夹(由于业务服务器硬盘较小,故不作备份,直接上传到七牛云。如需开启则删除下面注释符) 以下代码未包含删备份 $targetPath = $this->getFilePath($targetType, $targetId, $uploadFile['isPublic']); $originalFile->move($targetPath, $filename); //todo 上传到七牛处理代码(存储、转码、拼接、水印)20151224 //$config = $this->getQiniuService()->initQiniu($targetPath,$filename); return $uploadFile; }
public function uploadAvatar() { $groupCode = 'tmp'; $user = $this->controller->getUserByToken($this->request); if (empty($user)) { return $this->createErrorResponse('not_login', "您尚未登录!"); } $file = $this->request->files->get('file'); if (empty($file)) { return $this->createErrorResponse('error', "没有选择上传文件!"); } if (!FileToolkit::isImageFile($file)) { return $this->createErrorResponse('error', "您上传的不是图片文件,请重新上传。"); } $record = $this->getFileService()->uploadFile($groupCode, $file); if (empty($record)) { return $this->createErrorResponse('error', "上传失败 ~请重新尝试!"); } $host = $this->request->getSchemeAndHttpHost(); $record['url'] = $host . $this->controller->get('topxia.twig.web_extension')->getFilePath($record['uri']); $record['createdTime'] = date('c', $record['createdTime']); unset($record['uri']); return $record; }
public function getImgFileMetaInfo($fileId, $scaledWidth, $scaledHeight) { if (empty($fileId)) { throw $this->createServiceException("参数不正确"); } $file = $this->getFile($fileId); if (empty($file)) { throw $this->createServiceException("文件不存在"); } $parsed = $this->parseFileUri($file["uri"]); list($naturalSize, $scaledSize) = FileToolkit::getImgInfo($parsed['fullpath'], $scaledWidth, $scaledHeight); return array($parsed["path"], $naturalSize, $scaledSize); }
public function videoEmbedWatermarkUploadAction(Request $request) { $file = $request->files->get('watermark'); if (!FileToolkit::isImageFile($file)) { throw $this->createAccessDeniedException('图片格式不正确!'); } $filename = 'watermarkembed_' . time() . '.' . $file->getClientOriginalExtension(); $directory = "{$this->container->getParameter('topxia.upload.public_directory')}/system"; $file = $file->move($directory, $filename); $path = "system/{$filename}"; $originFileInfo = getimagesize($file); $filePath = $this->container->getParameter('topxia.upload.public_directory') . "/" . $path; $imagine = new Imagine(); $rawImage = $imagine->open($filePath); $pathinfo = pathinfo($filePath); $specification['240'] = 20; $specification['360'] = 30; $specification['480'] = 40; $specification['720'] = 60; $specification['1080'] = 90; foreach ($specification as $key => $value) { $width = $originFileInfo[0] * $value / $originFileInfo[1]; $specialImage = $rawImage->copy(); $specialImage->resize(new Box($width, $value)); $filePath = "{$pathinfo['dirname']}/{$pathinfo['filename']}-{$key}.{$pathinfo['extension']}"; $specialImage->save($filePath); } $response = array('path' => $path, 'url' => $this->get('topxia.twig.web_extension')->getFileUrl($path)); return new Response(json_encode($response)); }
protected function createFilesJsonResponse($files) { foreach ($files as &$file) { $file['updatedTime'] = date('Y-m-d H:i', $file['updatedTime']); $file['size'] = FileToolkit::formatFileSize($file['size']); // Delete some file attributes to redunce the json response size unset($file['hashId']); unset($file['convertHash']); unset($file['etag']); unset($file['convertParams']); unset($file); } return $this->createJsonResponse($files); }
public function getLocalVideo() { $fileId = $this->getParam("targetId"); $user = $this->controller->getuserByToken($this->request); if (!$user->isLogin()) { return $this->createErrorResponse('not_login', "您尚未登录!"); } $file = $this->getUploadFileService()->getFile($fileId); if (empty($file)) { return $this->createErrorResponse('error', "视频文件不存在!"); } $response = BinaryFileResponse::create($file['fullpath'], 200, array(), false); $response->trustXSendfileTypeHeader(); $mimeType = FileToolkit::getMimeTypeByExtension($file['ext']); if ($mimeType) { $response->headers->set('Content-Type', $mimeType); } return $response; }
public function uploadAction(Request $request) { $group = $request->query->get('group'); $file = $this->get('request')->files->get('file'); if (!is_object($file)) { throw $this->createNotFoundException('上传文件不能为空!'); } if (filesize($file) > 1024 * 1024 * 2) { throw $this->createNotFoundException('上传文件大小不能超过2MB!'); } if (FileToolkit::validateFileExtension($file, 'png jpg gif doc xls txt rar zip')) { throw $this->createNotFoundException('文件类型不正确!'); } $record = $this->getFileService()->uploadFile($group, $file); //$record['url'] = $this->get('topxia.twig.web_extension')->getFilePath($record['uri']); unset($record['uri']); $record['name'] = $file->getClientOriginalName(); return new Response(json_encode($record)); }
public function uploadAction(Request $request, $blockId) { $response = array(); if ($request->getMethod() == 'POST') { $file = $request->files->get('file'); if (!FileToolkit::isImageFile($file)) { throw $this->createAccessDeniedException('图片格式不正确!'); } $filename = 'block_picture_' . time() . '.' . $file->getClientOriginalExtension(); $directory = "{$this->container->getParameter('topxia.upload.public_directory')}/system"; $file = $file->move($directory, $filename); $block = $this->getBlockService()->getBlock($blockId); $url = "{$this->container->getParameter('topxia.upload.public_url_path')}/system/{$filename}"; $response = array('url' => $url); } return $this->createJsonResponse($response); }
public function localMediaAction(Request $request, $id, $token) { $file = $this->getUploadFileService()->getFile($id); if (empty($file)) { throw $this->createNotFoundException(); } if (!in_array($file["type"], array("audio", "video"))) { throw $this->createAccessDeniedException(); } $token = $this->getTokenService()->verifyToken('local.media', $token); if ($token['userId'] != $this->getCurrentUser()->getId()) { throw $this->createAccessDeniedException(); } $response = BinaryFileResponse::create($file['fullpath'], 200, array(), false); $response->trustXSendfileTypeHeader(); $mimeType = FileToolkit::getMimeTypeByExtension($file['ext']); if ($mimeType) { $response->headers->set('Content-Type', $mimeType); } return $response; }
public function faviconUploadAction(Request $request) { $fileId = $request->request->get('id'); $objectFile = $this->getFileService()->getFileObject($fileId); if (!FileToolkit::isImageFile($objectFile)) { throw $this->createAccessDeniedException('图片格式不正确!'); } $file = $this->getFileService()->getFile($fileId); $parsed = $this->getFileService()->parseFileUri($file["uri"]); $site = $this->getSettingService()->get('site', array()); $oldFileId = empty($site['favicon_file_id']) ? null : $site['favicon_file_id']; $site['favicon_file_id'] = $fileId; $site['favicon'] = "{$this->container->getParameter('topxia.upload.public_url_path')}/" . $parsed["path"]; $site['favicon'] = ltrim($site['favicon'], '/'); $this->getSettingService()->set('site', $site); if ($oldFileId) { $this->getFileService()->deleteFile($oldFileId); } $this->getLogService()->info('system', 'update_settings', "更新浏览器图标", array('favicon' => $site['favicon'])); $response = array('path' => $site['favicon'], 'url' => $this->container->get('templating.helper.assets')->getUrl($site['favicon'])); return $this->createJsonResponse($response); }
private function setLogo($request, $user) { $data = $request->files->get('form'); $file = $data['avatar']; if (!FileToolkit::isImageFile($file)) { return $this->createMessageResponse('info', '上传图片格式错误,请上传jpg, gif, png格式的文件。!'); } $filenamePrefix = "user_{$user['id']}_"; $hash = substr(md5($filenamePrefix . time()), -8); $ext = $file->getClientOriginalExtension(); $filename = $filenamePrefix . $hash . '.' . $ext; $directory = $this->container->getParameter('topxia.upload.public_directory') . '/tmp'; $file = $file->move($directory, $filename); $fileName = str_replace('.', '!', $file->getFilename()); return $filename; }
$status = ServiceKernel::instance()->createService('User.UserService')->verifyPassword($user_id, $current_password); if ($status) { $result = ServiceKernel::instance()->createService('User.UserService')->changePassword($user_id, $new_password); } else { $result = false; } return array('success' => $result); }); //上传头像 $api->post('/avatar/post', function (Request $request) { $user = getCurrentUser(); $userId = $user['id']; //上传 $groupCode = 'user'; $file = $request->files->get('file'); if (!FileToolkit::isImageFile($file)) { throw new \RuntimeException("您上传的不是图片文件,请重新上传。"); } $FileService = ServiceKernel::instance()->createService('Content.FileService'); $record = $FileService->uploadFile($groupCode, $file); $parsed = $FileService->parseFileUri($record['uri']); $imgInfo = getimagesize($parsed['fullpath']); //切图 $options = array(); $options['x'] = $request->request->get('x', 0); $options['y'] = $request->request->get('x', 71); $options['x2'] = $request->request->get('x', 180); $options['y2'] = $request->request->get('x', 251); $options['w'] = $request->request->get('x', 180); $options['h'] = $request->request->get('x', 180); $options['width'] = $imgInfo[0];
public function avatarAction(Request $request) { $user = $this->getCurrentUser(); $form = $this->createFormBuilder()->add('avatar', 'file')->getForm(); if ($request->getMethod() == 'POST') { $form->bind($request); if ($form->isValid()) { $data = $form->getData(); $file = $data['avatar']; if (!FileToolkit::isImageFile($file)) { return $this->createMessageResponse('error', '上传图片格式错误,请上传jpg, gif, png格式的文件。'); } $filenamePrefix = "user_{$user['id']}_"; $hash = substr(md5($filenamePrefix . time()), -8); $ext = $file->getClientOriginalExtension(); $filename = $filenamePrefix . $hash . '.' . $ext; $directory = $this->container->getParameter('topxia.upload.public_directory') . '/tmp'; $file = $file->move($directory, $filename); $fileName = str_replace('.', '!', $file->getFilename()); return $this->redirect($this->generateUrl('settings_avatar_crop', array('file' => $fileName))); } } $hasPartnerAuth = $this->getAuthService()->hasPartnerAuth(); if ($hasPartnerAuth) { $partnerAvatar = $this->getAuthService()->getPartnerAvatar($user['id'], 'big'); } else { $partnerAvatar = null; } $fromCourse = $request->query->get('fromCourse'); return $this->render('TopxiaWebBundle:Settings:avatar.html.twig', array('form' => $form->createView(), 'user' => $this->getUserService()->getUser($user['id']), 'partnerAvatar' => $partnerAvatar, 'fromCourse' => $fromCourse)); }
public function avatarAction(Request $request, $id) { if (false === $this->get('security.context')->isGranted('ROLE_SUPER_ADMIN')) { throw $this->createAccessDeniedException(); } $user = $this->getUserService()->getUser($id); $form = $this->createFormBuilder()->add('avatar', 'file')->getForm(); if ($request->getMethod() == 'POST') { $form->bind($request); if ($form->isValid()) { $data = $form->getData(); $file = $data['avatar']; if (!FileToolkit::isImageFile($file)) { return $this->createMessageResponse('error', '上传图片格式错误,请上传jpg, gif, png格式的文件。'); } $filenamePrefix = "user_{$user['id']}_"; $hash = substr(md5($filenamePrefix . time()), -8); $ext = $file->getClientOriginalExtension(); $filename = $filenamePrefix . $hash . '.' . $ext; $directory = $this->container->getParameter('topxia.upload.public_directory') . '/tmp'; $file = $file->move($directory, $filename); $fileName = str_replace('.', '!', $file->getFilename()); $avatarData = $this->avatar_2($id, $fileName); return $this->render('TopxiaAdminBundle:User:user-avatar-crop-modal.html.twig', array('user' => $user, 'filename' => $fileName, 'pictureUrl' => $avatarData['pictureUrl'], 'naturalSize' => $avatarData['naturalSize'], 'scaledSize' => $avatarData['scaledSize'])); } } $hasPartnerAuth = $this->getAuthService()->hasPartnerAuth(); if ($hasPartnerAuth) { $partnerAvatar = $this->getAuthService()->getPartnerAvatar($user['id'], 'big'); } else { $partnerAvatar = null; } return $this->render('TopxiaAdminBundle:User:user-avatar-modal.html.twig', array('form' => $form->createView(), 'user' => $this->getUserService()->getUser($user['id']), 'partnerAvatar' => $partnerAvatar)); }
public function getUploadMaxFilesize($formated = true) { $max = FileToolkit::getMaxFilesize(); if ($formated) { return FileToolkit::formatFileSize($max); } return $max; }
private function createFilesJsonResponse($files) { foreach ($files as &$file) { $file['updatedTime'] = date('Y-m-d H:i', $file['updatedTime']); $file['size'] = FileToolkit::formatFileSize($file['size']); unset($file); } return $this->createJsonResponse($files); }