artworthy
artworthy

Reputation: 57

Can programatically PUT to Amazon S3 bucket but not DELETE

My users can programically upload images to the AWS S3 bucket fine. But using the same php S3 class include (which contains the put case as well as this delete case below) -- they can't delete the file:

        case 'DELETE':
            curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'DELETE');
        break;

So I'm wondering if any sharp eye out there can see what I'm missing in my scripts. I'm not getting any error messages. -thanks

   //THIS WORKS

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

    //GET keys   
   include_once "scripts/S3k.php";  


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

   //assigns file location var to get
    $fileTempName = $DestinationFile;  
  //Assigns S3 path/file name
    $fileName = $path.$user_id."/".$fileName;

//Move the file over to S3
    if ($s3->putObjectFile($fileTempName, $mybucket, $fileName, S3::ACL_PUBLIC_READ)) { 
    echo " file uploaded";
}               


//THIS  doesn't  WORKS

//include the S3 class
if (!class_exists('S3'))require('S3.php');

//get KEYS
include "scripts/S3k.php";  

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

//Assigns S3 path/file name
    $fileName = $path.$user_id."/".$image_link;

//Deletes the file in S3
     if ($s3->deleteObject($mybucket, $fileName)) {
    echo "Deleted file.";
}               

//And this GET script doesn't work either.
  $image_link = "1/Bowery_3_58x46app.jpg";
  $pathS3 = "http://d21v2uajc20x0x.cloudfront.net/myGallerist/artWorkImages/";

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

include_once "scripts/S3k.php"; 

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

// Get the file from S3

    if ($s3->getObject($mybucket, $pathS3.$image_link, "tempImage/".$image_link )) {        

         } else {

            // Couldn't move the file over. 
             $msgToUser = 'No file was uploaded.';
    }

Upvotes: 0

Views: 1603

Answers (1)

Sabeen Malik
Sabeen Malik

Reputation: 10880

I can be wrong but seems like it could be an issue with the bucket name , in delete you are using a variable as the bucketname where as in put object you have hard coded the bucket name , can you please verify that the variable contains the correct bucket name?

Edit: Also you should try to echo the $fileName in both cases and make sure they are exactly the same.

Upvotes: 1

Related Questions