Sample code for 30+ languages & platforms
Go

REST File Streaming Upload

See more Azure Cloud Storage Examples

Demonstrates how to stream the REST body from a file. This example demonstrates a REST upload to the Azure Cloud Storage service.

Chilkat Go Downloads

Go
    success := false

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

    rest := chilkat.NewRest()

    // Connect to the Azure Storage Blob Service
    bTls := true
    port := 443
    bAutoReconnect := true
    // In this example, the storage account name is "chilkat".
    success = rest.Connect("chilkat.blob.core.windows.net",port,bTls,bAutoReconnect)
    if success != true {
        fmt.Println(rest.LastErrorText())
        rest.DisposeRest()
        return
    }

    // Provide Azure Cloud credentials for the REST call.
    azAuth := chilkat.NewAuthAzureStorage()
    azAuth.SetAccessKey("AZURE_ACCESS_KEY")
    // The account name used here should match the 1st part of the domain passed in the call to Connect (above).
    azAuth.SetAccount("chilkat")
    azAuth.SetScheme("SharedKey")
    azAuth.SetService("Blob")
    // This causes the "x-ms-version: 2021-08-06" header to be automatically added.
    azAuth.SetXMsVersion("2021-08-06")
    success = rest.SetAuthAzureStorage(azAuth)

    // Set some request headers.
    success = rest.AddHeader("x-ms-blob-content-disposition","attachment; filename=\"hamlet.xml\"")
    success = rest.AddHeader("x-ms-blob-type","BlockBlob")
    success = rest.AddHeader("x-ms-meta-m1","v1")
    success = rest.AddHeader("x-ms-meta-m2","v2")

    // Note: The application does not need to explicitly set the following
    // headers: x-ms-date, Authorization, and Content-Length.  These headers
    // are automatically set by Chilkat.

    fileStream := chilkat.NewStream()
    fileStream.SetSourceFile("qa_data/xml/hamlet.xml")

    // Upload to the Azure Cloud Storage service.
    // The file is streamed, so the full file never has to completely reside in memory.
    // The file is uploaded to the container named "test".
    responseStr := rest.FullRequestStream("PUT","/test/hamlet.xml",fileStream)
    if rest.LastMethodSuccess() != true {
        fmt.Println(rest.LastErrorText())
        rest.DisposeRest()
        azAuth.DisposeAuthAzureStorage()
        fileStream.DisposeStream()
        return
    }

    // When successful, the Azure Storage service will respond with a 201 response code,
    // with an empty body.  Therefore, in the success condition, the responseStr is empty.
    if rest.ResponseStatusCode() == 201 {
        fmt.Println("File uploaded.")
    } else {
        // Examine the request/response to see what happened.
        fmt.Println("response status code = ", rest.ResponseStatusCode())
        fmt.Println("response status text = ", rest.ResponseStatusText())
        fmt.Println("response header: ", rest.ResponseHeader())
        fmt.Println("response body (if any): ", *responseStr)
        fmt.Println("---")
        fmt.Println("LastRequestStartLine: ", rest.LastRequestStartLine())
        fmt.Println("LastRequestHeader: ", rest.LastRequestHeader())
    }


    rest.DisposeRest()
    azAuth.DisposeAuthAzureStorage()
    fileStream.DisposeStream()