Sample code for 30+ languages & platforms
Lua

REST Upload String

See more Amazon S3 (new) Examples

Example to upload the contents of a string to the Amazon S3 service.

Chilkat Lua Downloads

Lua
local chilkat = require("chilkat")

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

local rest = chilkat.Rest.new()

-- Connect to the Amazon AWS REST server.
local bTls = true
local port = 443
local bAutoReconnect = true
local success = rest:connect("s3.amazonaws.com", port, bTls, bAutoReconnect)

-- ----------------------------------------------------------------------------
-- Important: For buckets created in regions outside us-east-1,
-- there are three important changes that need to be made.
-- See Working with S3 Buckets in Non-us-east-1 Regions for the details.
-- ----------------------------------------------------------------------------

-- Provide AWS credentials for the REST call.
local authAws = chilkat.AuthAws.new()
authAws.access_key = "AWS_ACCESS_KEY"
authAws.secret_key = "AWS_SECRET_KEY"
authAws.service_name = "s3"
success = rest:set_auth_aws(authAws)

-- Set the bucket name via the HOST header.
-- In this case, the bucket name is "chilkat100".
rest.host = "chilkat100.s3.amazonaws.com"

-- Load a text file into memory.
local fac = chilkat.FileAccess.new()
local fileContents = fac:read_entire_text_file("qa_data/xml/hamlet.xml", "utf-8")
if not fac.last_method_success then
    print(fac.last_error_text)
    return
end

-- To send the file in gzip or deflate compressed format, set the Content-Encoding request
-- header to "gzip" or "deflate".  (this is optional)
success = rest:add_header("Content-Encoding", "gzip")

-- Indicate the Content-Type of our upload.  (This is optional)
success = rest:add_header("Content-Type", "text/xml")

-- We can add an "Expect: 100-continue" header so that if the request is rejected
-- by the server immediately after receiving the request header, it can respond
-- and the client (Chilkat) can avoid sending the file data.
-- (this is optional)
success = rest:add_header("Expect", "100-continue")

-- Upload the file to Amazon S3.
local responseBodyStr = rest:full_request_string("PUT", "/hamlet_play.xml", fileContents)
if not rest.last_method_success then
    print(rest.last_error_text)
    return
end

-- Did we get a 200 response indicating success?
local statusCode = rest.response_status_code
if statusCode ~= 200 then
    print("Error response: " .. responseBodyStr)
    print("Status code: " .. statusCode .. ", Status text: " .. rest.response_status_text)
    return
end

print("File successfully uploaded.")