Sample code for 30+ languages & platforms
Node.js

S3 Rename File

See more Amazon S3 (new) Examples

Demonstrates how to rename a file on Amazon S3.

Renaming an object (file) in AWS S3 using the AWS S3 API involves copying the object to a new location with the desired name and then deleting the original object.

Chilkat Node.js Downloads

Node.js
NODEJS_PRELUDE

function chilkatExample() {

    var success = false;

    //  This example requires the Chilkat API to have been previously unlocked.
    //  See Global Unlock Sample for sample code.

    var rest = new chilkat.Rest();

    //  Connect to the Amazon AWS REST server in the desired region.
    var bTls = true;
    var port = 443;
    var bAutoReconnect = true;
    success = rest.Connect("s3-us-west-2.amazonaws.com",port,bTls,bAutoReconnect);

    //  Provide AWS credentials.
    var authAws = new chilkat.AuthAws();
    authAws.AccessKey = "AWS_ACCESS_KEY";
    authAws.SecretKey = "AWS_SECRET_KEY";
    authAws.ServiceName = "s3";

    //  This particular bucket is in the Oregon region, as opposed to the US Standard,
    //  therefore the Region must be set appropriately.
    //  Also note that we connected to "s3-us-west-2.amazonaws.com".
    authAws.Region = "us-west-2";

    rest.SetAuthAws(authAws);

    //  Set the bucket name via the HOST header.
    //  In this case, the bucket name is "chilkat.qa".
    //  Note that the Host header should use "bucketName.s3.amazonaws.com", not "bucketName.s3-us-west-2.amazonaws.com"
    rest.Host = "chilkat.qa.s3.amazonaws.com";

    //  Copy /images/sea_creatures/starfish.jpg to /images/sea_creatures/starfish3.jpg
    //  Notice here that the x-amz-copy-source includes the bucket in the source path,
    //  but the target path passed to FullRequestNoBody does NOT contain the bucket (because the bucket
    //  was already specified in the Host header).
    rest.AddHeader("x-amz-copy-source","/chilkat.qa/images/sea_creatures/starfish.jpg");

    var sbResponse = new chilkat.StringBuilder();
    success = rest.FullRequestNoBodySb("PUT","/images/sea_creatures/starfish3.jpg",sbResponse);
    if (success == false) {
        console.log(rest.LastErrorText);
        return;
    }

    //  When successful, the S3 Storage service will respond with a 200 or 204 response code,
    //  with an XML body.  
    if (rest.ResponseStatusCode !== 200) {
        //  Examine the request/response to see what happened.
        console.log("response status code = " + rest.ResponseStatusCode);
        console.log("response status text = " + rest.ResponseStatusText);
        console.log("response header: " + rest.ResponseHeader);
        console.log("response body: " + sbResponse.GetAsString());
        console.log("---");
        console.log("LastRequestStartLine: " + rest.LastRequestStartLine);
        console.log("LastRequestHeader: " + rest.LastRequestHeader);
    }

    console.log(sbResponse.GetAsString());
    console.log("Copy Successful.");

    //  --------------------------------------
    //  Now we can delete the original file..
    //  --------------------------------------

    //  We no longer want to send the x-amz-copy-source header.  Remove it.
    rest.RemoveHeader("x-amz-copy-source");

    success = rest.FullRequestNoBodySb("DELETE","/images/sea_creatures/starfish.jpg",sbResponse);
    if (success == false) {
        console.log(rest.LastErrorText);
        return;
    }

    //  If successfully deleted, the response status code is 204 and the response body text will be empty.
    var statusCode = rest.ResponseStatusCode;
    console.log("Response status code = " + statusCode);
    console.log("Response text = ");
    console.log(sbResponse.GetAsString());

}

chilkatExample();