PDF を Amazon S3 にアップロードする次のコードがあります。必要なのは、PDF の最初のページから画像を作成し、それを s3 にもアップロードすることです。
//instantiate the class
$s3 = new S3(awsAccessKey, awsSecretKey);
//check whether a form was submitted
if($_SERVER['REQUEST_METHOD'] == "POST")
{
//retreive post variables
$fileName = $_FILES['file']['name'];
$fileTempName = $_FILES['file']['tmp_name'];
$fileSize = $_FILES['file']['size'];
$extension=end(explode(".", $fileName));
$rand = rand(1,100000000);
$sha1 = sha1($rand);
$md5 = md5($sha1);
$fName = substr($md5, 0, 20);
$finalName = $fName.'.'.$extension;
//create a new bucket
$s3->putBucket("bucket", S3::ACL_PUBLIC_READ);
//move the file
if ($s3->putObjectFile($fileTempName, "bucket", 'publications/'.$finalName, S3::ACL_PUBLIC_READ)) {
$s3file='http://bucket.s3.amazonaws.com/publications/'.$finalName;
$aS3File = 'publications/'.$finalName;
$im = new imagick($s3file[0]);
// convert to jpg
$im->setImageColorspace(255);
$im->setCompression(Imagick::COMPRESSION_JPEG);
$im->setCompressionQuality(75);
$im->setImageFormat('jpeg');
//resize
$im->resizeImage(640, 877, imagick::FILTER_LANCZOS, 1);
//write image on server (line 54)
$s3->putObjectFile("","bucket", 'publications/'.$im->writeImage($fName.'.jpg'), S£::ACL_PUBLIC_READ);
}else{
echo "<strong>Something went wrong while uploading your file... sorry.</strong>";
}
セキュリティのために実際のバケット名を「bucket」に置き換えました。次のエラーが表示されるので、ここで何が間違っているのか教えてください。
PHP の致命的なエラー: /var/www/ams/pub-new-issue.php:45 のメッセージ「ファイルを読み取れません: h」を含むキャッチされない例外「ImagickException」:\nスタック トレース:\n#0 /var/www/ ams/pub-new-issue.php(45): Imagick->__construct('h')\n#1 {main}\n 45 行目の /var/www/ams/pub-new-issue.php でスローされます、
ありがとう