Saya membuat formulir untuk mengunggah gambar. Gambar yang diunggah perlu diubah ukurannya dan diunggah ke bucket s3. Setelah itu saya mendapatkan url s3 dan menyimpannya ke objek Posting. Namun saya mengalami beberapa masalah saat mengubah ukuran dan mengunggah. Ini kode saya:
Pengontrol Formulir:
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 - layanan yang saya gunakan untuk mengubah ukuran dan mengunggah gambar
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;
}
Tapi saya mendapatkan kesalahan:
Warning: file_put_contents(): supplied resource is not a valid stream resource