繁体   English   中英

如何将缩略图文件上传到亚马逊S3存储桶?

[英]How to upload a thumbnail file to a amazon s3 bucket?

嗨,我是亚马逊的新手,几乎没有使用文件的想法。我正在尝试将缩略图上传到存储桶中。 我可以在本地主机中上传映像,但不能在存储桶中上传。可以将原始映像上传到存储桶,这是我的代码

<?php
//include the S3 class
            if (!class_exists('S3'))require_once('S3.php');

            //AWS access info
            if (!defined('awsAccessKey')) define('awsAccessKey', '');
            if (!defined('awsSecretKey')) define('awsSecretKey', '');

            //instantiate the class
            $s3 = new S3(awsAccessKey, awsSecretKey);


function Upload($field_name = '', $target_folder = '', $file_name = '', $thumb = FALSE, $thumb_folder = '', $thumb_width = '', $thumb_height = ''){
    //folder path setup
    $target_path = $target_folder;
    $thumb_path = $thumb_folder;

    //file name setup
    $filename_err = explode(".",$_FILES[$field_name]['name']);
    $filename_err_count = count($filename_err);
    $file_ext = $filename_err[$filename_err_count-1];
    if($file_name != '')
    {
        $fileName = $file_name.'.'.$file_ext;
    }
    else
    {
        $fileName = $_FILES[$field_name]['name'];
    }

    //upload image path
    $upload_image = $target_path.basename($fileName);

    //upload image
    if(move_uploaded_file($_FILES[$field_name]['tmp_name'],$upload_image))
    {
        //thumbnail creation
        if($thumb == TRUE)
        {
            $thumbnail = $thumb_path.$fileName;
            list($width,$height) = getimagesize($upload_image);
            $thumb_create = imagecreatetruecolor($thumb_width,$thumb_height);
            switch($file_ext){
                case 'jpg':
                    $source = imagecreatefromjpeg($upload_image);
                    break;
                case 'jpeg':
                    $source = imagecreatefromjpeg($upload_image);
                    break;
                case 'png':
                    $source = imagecreatefrompng($upload_image);
                    break;
                case 'gif':
                    $source = imagecreatefromgif($upload_image);
                    break;
                default:
                    $source = imagecreatefromjpeg($upload_image);
            }
            imagecopyresized($thumb_create,$source,0,0,0,0,$thumb_width,$thumb_height,$width,$height);
            switch($file_ext){
                case 'jpg' || 'jpeg':
                    imagejpeg($thumb_create,$thumbnail,72);
                    break;
                case 'png':
                    imagepng($thumb_create,$thumbnail,50);
                    break;
                case 'gif':
                    imagegif($thumb_create,$thumbnail,50);
                    break;
                default:
                    imagejpeg($thumb_create,$thumbnail,50);
            }
        }

        return $fileName;
    }

}


if(!empty($_FILES['image']['name'])){

    $image_name = $_FILES['image']['name'];
        $tmp_name   = $_FILES['image']['tmp_name'];
        $size       = $_FILES['image']['size'];
        $type       = $_FILES['image']['type'];
        $error      = $_FILES['image']['error'];
    $target_dir = "products/";
    $target_file = $target_dir.$_FILES['image']['name'];
    $fileTempName = $_FILES['image']['tmp_name'];
    $fileName = $target_dir.$_FILES['image']['name'];

$s3->putBucket("bucketname", S3::ACL_PUBLIC_READ);

                //move the original file to bucket file
                if ($s3->putObjectFile($fileTempName, "bucketname", $fileName, S3::ACL_PUBLIC_READ)) {
                    echo "<strong>We successfully uploaded your file.</strong>";
                }else{
                    echo "<strong>Something went wrong while uploading your file... sorry.</strong>";
                }

    //call thumbnail creation function and store thumbnail name
    $upload_img = Upload('image','uploads/','',TRUE,'uploads/thumbs/','200','160');
    $upload_img1 = Upload('image','products/','',TRUE,'products/','200','160');

    $fileTempName12 = $_FILES[$upload_img1]['tmp_name'];
    //$fileName12 = 'products/'.$_FILES[$upload_img1]['name'];
    //full path of the thumbnail image
    $thumb_src = 'products/'.$upload_img1;
    $s3->putBucket("bucketname", S3::ACL_PUBLIC_READ);

                //move the thumbnail to bucket
                if ($s3->putObjectFile($fileTempName12, "bucketname", $thumb_src, S3::ACL_PUBLIC_READ)) {
                    echo "<strong>We successfully uploaded your file.</strong>";
                }else{
                    echo "<strong>Something went wrong while uploading your file... sorry.</strong>";
                }
    //set success and error messages
    $message = $upload_img?"<span style='color:#008000;'>Image thumbnail have been created successfully.</span>":"<span style='color:#F00000;'>Some error occurred, please try again.</span>";

}else{

    //if form is not submitted, below variable should be blank
    $thumb_src = '';
    $message = '';
}
?>
<?php
    // Get the contents of our bucket
    $contents = $s3->getBucket("bucketname");
    if(is_array($contents) || is_object($contents))
    {
    foreach ($contents as $file){

        $fname = $file['name'];
        $furl = "http://bucketname.s3.amazonaws.com/".$fname;

        //output a link to the file
        echo "<a href=\"$furl\">$fname</a><br />";
    }
    }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<form method="post" enctype="multipart/form-data">
    <input type="file" name="image"/>
    <input type="submit" name="submit" value="Upload"/>
</form>
</body>
</html>

我的原始文件已成功上传,但是在上传缩略图时出现以下错误,

Warning: S3::putBucket(): [BucketAlreadyOwnedByYou] Your previous request to create the named bucket succeeded and you already own it. in /Applications/XAMPP/xamppfiles/htdocs/image_thumbnail_creation_php/S3.php on line 188
We successfully uploaded your file.upload google.jpgupload1 
Notice: Undefined index: in /Applications/XAMPP/xamppfiles/htdocs/image_thumbnail_creation_php/index.php on line 130

Notice: Undefined variable: putObjectFile in /Applications/XAMPP/xamppfiles/htdocs/image_thumbnail_creation_php/S3.php on line 187

Warning: S3::putBucket(): [BucketAlreadyOwnedByYou] Your previous request to create the named bucket succeeded and you already own it. in /Applications/XAMPP/xamppfiles/htdocs/image_thumbnail_creation_php/S3.php on line 188

Warning: S3::inputFile(): Unable to open input file: in /Applications/XAMPP/xamppfiles/htdocs/image_thumbnail_creation_php/S3.php on line 224
Something went wrong while uploading your file... sorry.

有人能帮我吗? 提前致谢...

试试这个:这对我有用

<?php 
// Bucket Name
if(isset($_FILES['image']['name']))
{
    $bucket="buket_name";
    if (!class_exists('S3'))require_once('S3.php');
    if (!defined('awsAccessKey')) define('awsAccessKey', 'your key');
    if (!defined('awsSecretKey')) define('awsSecretKey', 'your secret key');
    $s3 = new S3(awsAccessKey, awsSecretKey);
    $s3->putBucket($bucket, S3::ACL_PUBLIC_READ);
    function make_thumb($src, $dest, $desired_width,$extension)
    {
        $extension=strtolower($extension);  
        if($extension == 'jpeg' ||  $extension == 'jpg' )
        {
            $source_image = imagecreatefromjpeg($src);
        }
        if($extension == 'png')
        {
            $source_image = imagecreatefrompng($src);
        }
        if($extension == 'gif')
        {
            $source_image = imagecreatefromgif($src);
        }
        $width = imagesx($source_image);
        $height = imagesy($source_image);
        $desired_height = floor($height * ($desired_width / $width));
        $virtual_image = imagecreatetruecolor($desired_width, $desired_height);
        imagecopyresampled($virtual_image, $source_image, 0, 0, 0, 0, $desired_width, $desired_height, $width, $height);
        if($extension == 'jpeg' ||  $extension == 'jpg')
        {
            imagejpeg($virtual_image, $dest);
        }
        if($extension == 'png' )
        {
            imagepng($virtual_image, $dest);
        }
        if($extension == 'gif' )
        {
            imagegif($virtual_image, $dest);
        }
    }

    $files=$_FILES;
    $form_name="image";
    $thumb_tmp_path="uploads/tmp/";
    $upload_path="user/";//s3 buket folder
    $name=$files[$form_name]['name'];
    $i_array=explode(".",$name);
    $ext=end($i_array);
    $size=$files[$form_name]['size'];
    $tmp=$files[$form_name]['tmp_name'];
    $names=time().$name;
    make_thumb($tmp,$thumb_tmp_path."thumb/".$names,512,$ext);
    $s3->putObjectFile($thumb_tmp_path."thumb/".$names,$bucket,$upload_path."thumb/".$names,S3::ACL_PUBLIC_READ);
    unlink($thumb_tmp_path."thumb/".$names);
    //if you upload full image than you remove belove comment
    //$s3->putObjectFile($tmp,$bucket,$upload_path.$names,S3::ACL_PUBLIC_READ);  
    echo "<img src='".$s3file='http://'.$bucket.'.s3.amazonaws.com/'.$upload_path."thumb/".$names."'/>";
}
?>
<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
   <form method="post" action="" enctype="multipart/form-data">
    <input type="file" name="image">
    <input type="submit" value="upload">
   </form>
</body>
</html>

尝试使用此设置正确的路径在服务器根目录中上传缩略图的位置。

 $upload_img = Upload('image','uploads/','',TRUE,'uploads/thumbs/','200','160');
    $upload_img1 = Upload('image','products/','',TRUE,'products/','200','160'); 
    // Absoulte path where to upload thumnail 
    //$fileTempName12 = $_FILES[$upload_img1]['tmp_name']; comment this line
    //$fileName12 = 'products/'.$_FILES[$upload_img1]['name'];
    //full path of the thumbnail image
    $thumb_src = 'products/'.$upload_img1;
    $s3->putBucket("bucketname", S3::ACL_PUBLIC_READ);

    if ($s3->putObjectFile($upload_img1, "bucketname", $thumb_src, S3::ACL_PUBLIC_READ)) {
        echo "<strong>We successfully uploaded your file.</strong>";
    }else{
        echo "<strong>Something went wrong while uploading your file... sorry.</strong>";
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM