画像をアップロードするためのフォームを作成しました。アップロードした画像のサイズを変更し、s3バケットにアップロードする必要があります。その後、私はs3のURLを取得し、Postオブジェクトに保存します。しかし、私はサイズ変更とアップロードにいくつか問題があります。ここに私のコードは次のとおりです。Symfony3フォーム:サイズ変更アップロード画像
フォームコントローラー:
public function newAction(Request $request)
{
$post = new Post();
$form = $this->createForm('AdminBundle\Form\PostType', $post);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$img = $form['image']->getData();
$s3Service = $this->get('app.s3_service');
$fileLocation = $s3Service->putFileToBucket($img, 'post-images/'.uniqid().'.'.$img->guessExtension());
$post->setImage($fileLocation);
$em = $this->getDoctrine()->getManager();
$em->persist($post);
$em->flush();
return $this->redirectToRoute('admin_posts_show', ['id' => $post->getId()]);
}
return $this->render('AdminBundle:AdvertPanel:new.html.twig', [
'advert' => $advert,
'form' => $form->createView(),
]);
}
app.s3_service - 私は、ユーザーがサイズを変更してアップロードするサービス画像
public function putFileToBucket($data, $destination){
$newImage = $this->resizeImage($data, 1080, 635);
$fileDestination = $this->s3Service->putObject([
"Bucket" => $this->s3BucketName,
"Key" => $destination,
"Body" => fopen($newImage, 'r+'),
"ACL" => "public-read"
])["ObjectURL"];
return $fileDestination;
}
public function resizeImage($image, $w, $h){
$tempFilePath = $this->fileLocator->locate('/tmp');
list($width, $height) = getimagesize($image);
$r = $width/$height;
if ($w/$h > $r) {
$newwidth = $h*$r;
$newheight = $h;
} else {
$newheight = $w/$r;
$newwidth = $w;
}
$dst = imagecreatetruecolor($newwidth, $newheight);
$image = imagecreatefrompng($image);
imagecopyresampled($dst, $image, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
file_put_contents($tempFilePath, $dst);
return $tempFilePath;
}
しかし、私はエラーを取得しています:
Warning: file_put_contents(): supplied resource is not a valid stream resource