手动创建一个 Symfony 上传文件

2022-08-30 15:45:07

我正面临以下问题,似乎无法弄清楚这个问题。我写了一个API端点,接受带有二进制数据的POST(标头:content-type:image/jpeg)。

我知道我可以用或Laravel的.PHP还有一个函数,它似乎也能正确读取字符串。file_get_content('php://input')$request->getContent()createimagefromstring($string)

我想做的是从这些原始数据创建一个 UploadFile ,这样我就可以用已经编写的函数来处理它。

这可能吗?

提前感谢您


答案 1

我想我找到了...仍然很好奇是否可以进行改进。

$imgRaw = imagecreatefromstring( $request->getContent() );
if ($imgRaw !== false) {
    imagejpeg($imgRaw, storage_path().'/tmp/tmp.jpg',100);
    imagedestroy($imgRaw);
    $file =  new UploadedFile( storage_path().'/tmp/tmp.jpg', 'tmp.jpg', 'image/jpeg',null,null,true);
    // DO STUFF WITH THE UploadedFile
}

答案 2

您可以尝试使用 base64 编码。Symfony为此提供了一些好东西。

您的代码将如下所示:

$base64Content = $request->request->get('base64Content'); // this is your post data
$yourFile = new UploadedBase64EncodedFile(new Base64EncodedFile($base64Content)); // this is an instance of UploadedFile

希望它有帮助!


推荐