2016-05-24 7 views
1

Hallo ich bin neu zu Amazon und habe sehr wenig Idee mit Dateien zu arbeiten. Ich versuche, ein Miniaturbild in den Bucket zu laden. Ich könnte ein Bild in localhost hochladen, aber ich konnte es in bucket.I nicht laden konnte das Originalbild zu dem heißen Stein lade, ist hier mein CodeWie lade ich eine Thumbnail-Datei in einen Amazon S3-Bucket hoch?

<?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> 

Meine ursprüngliche Datei erfolgreich hochgeladen, aber ich erhalte die folgenden Fehler beim Hochladen der Miniaturansicht,

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. 

Kann mir jemand helfen? Vielen Dank im Voraus ...

Antwort

3

versuchen Sie dies: dies ist für mich arbeiten

<?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> 
+0

Ich bekomme diesen Fehler mit $ dies, wenn nicht im Objekt Kontext in/Anwendungen/XAMPP/xamppfiles/htdocs/image_thumbnail_creation_php/index.php auf Zeile 74 @kelvin kantaria – Anu

+0

Ich löse den Fehler. Ich verwende API in der Klassendatei, als ich $ this verwende. Sie entfernen $ diese und enthalten auch S3-Klasse-Datei –

+0

Seine Arbeit ... erstaunlich Vielen Dank @kelvin Kantaria – Anu

1

Probieren Sie diesen richtigen Pfad, wo Thumbnail in Ihrem Server root hochladen.

$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>"; 
    } 
+0

Ich habe versucht diesen Fehler Hinweis bekommen: Nicht definierte Variable: putObjectFile in /Applications/XAMPP/xamppfiles/htdocs/image_thumbnail_creation_php/S3.php auf Zeile 187 – Anu

+0

was thumnail in s3 bucket hochlädt? Pls teilen S3.php Dateicode. – user5200704

+0

Ich habe in der Frage enthalten, bitte verweisen Sie es. @ user5200704 – Anu

Verwandte Themen