src/ApiBundle/Api/Resource/File/File.php
(开头部分) 1KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
<?php
namespace ApiBundle\Api\Resource\File;
use ApiBundle\Api\ApiRequest;
use ApiBundle\Api\Resource\AbstractResource;
use AppBundle\Common\FileToolkit;
use Biz\Content\FileException;
use Symfony\Component\HttpFoundation\File\File as FileObject;
class File extends AbstractResource
{
public function add(ApiRequest $request)
{
$group = $request->request->get('group', null);
if (!in_array($group, array('tmp', 'user', 'course', 'system'))) {
throw FileException::FILE_GROUP_INVALID();
}
$file = $request->request->get('file', null);
$file = $this->fileDecode($file);
if (empty($file)) {
$file = $request->getHttpRequest()->files->get('file', null);
}
if (empty($file)) {
throw FileException::FILE_NOT_UPLOAD();
}
return $this->getFileService()->uploadFile($group, $file);
}
protected function fileDecode($str)
{
if (empty($str)) {
return $str;
}
// data:{mimeType};base64,{code}
$user = $this->getCurrentUser();
if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $str, $result)) {
$filePath = $this->biz['topxia.upload.public_directory'].'/tmp/'.$user['id'].'_'.time().'.'.$result[2];
file_put_contents($filePath, base64_decode(str_replace($result[1], '', $str)));
$file = new FileObject($filePath);
$errors = FileToolkit::validateFileExtension($file);
if ($errors) {
@unlink($file->getRealPath());
throw FileException::FILE_UPLOAD_NOT_ALLOWED();
}
return $file;
}
return null;
}
protected function getFileService()
{
return $this->service('Content:FileService');
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。