--- type: docs title: "Local Storage binding spec" linkTitle: "Local Storage" description: "Detailed documentation on the Local Storage binding component" aliases: - "/operations/components/setup-bindings/supported-bindings/localstorage/" --- ## Component format To set up the Local Storage binding, create a component of type `bindings.localstorage`. See [this guide]({{< ref "howto-bindings.md#1-create-a-binding" >}}) on how to create and apply a binding configuration. ```yaml apiVersion: dapr.io/v1alpha1 kind: Component metadata: name: spec: type: bindings.localstorage version: v1 metadata: - name: rootPath value: "" ``` ## Spec metadata fields | Field | Required | Binding support | Details | Example | |--------------------|:--------:|--------|---------|---------| | `rootPath` | Y | Output | The root path anchor to which files can be read / saved | `"/temp/files"` | ## Binding support This component supports **output binding** with the following operations: - `create` : [Create file](#create-file) - `get` : [Get file](#get-file) - `list` : [List files](#list-files) - `delete` : [Delete file](#delete-file) ### Create file To perform a create file operation, invoke the Local Storage binding with a `POST` method and the following JSON body: > Note: by default, a random UUID is generated. See below for Metadata support to set the name ```json { "operation": "create", "data": "YOUR_CONTENT" } ``` #### Examples ##### Save text to a random generated UUID file {{< tabs Windows Linux >}} {{% codetab %}} On Windows, utilize cmd prompt (PowerShell has different escaping mechanism) ```bash curl -d "{ \"operation\": \"create\", \"data\": \"Hello World\" }" http://localhost:/v1.0/bindings/ ``` {{% /codetab %}} {{% codetab %}} ```bash curl -d '{ "operation": "create", "data": "Hello World" }' \ http://localhost:/v1.0/bindings/ ``` {{% /codetab %}} {{< /tabs >}} ##### Save text to a specific file {{< tabs Windows Linux >}} {{% codetab %}} ```bash curl -d "{ \"operation\": \"create\", \"data\": \"Hello World\", \"metadata\": { \"fileName\": \"my-test-file.txt\" } }" \ http://localhost:/v1.0/bindings/ ``` {{% /codetab %}} {{% codetab %}} ```bash curl -d '{ "operation": "create", "data": "Hello World", "metadata": { "fileName": "my-test-file.txt" } }' \ http://localhost:/v1.0/bindings/ ``` {{% /codetab %}} {{< /tabs >}} ##### Save a binary file To upload a file, encode it as Base64. The binding should automatically detect the Base64 encoding. {{< tabs Windows Linux >}} {{% codetab %}} ```bash curl -d "{ \"operation\": \"create\", \"data\": \"YOUR_BASE_64_CONTENT\", \"metadata\": { \"fileName\": \"my-test-file.jpg\" } }" http://localhost:/v1.0/bindings/ ``` {{% /codetab %}} {{% codetab %}} ```bash curl -d '{ "operation": "create", "data": "YOUR_BASE_64_CONTENT", "metadata": { "fileName": "my-test-file.jpg" } }' \ http://localhost:/v1.0/bindings/ ``` {{% /codetab %}} {{< /tabs >}} #### Response The response body will contain the following JSON: ```json { "fileName": "" } ``` ### Get file To perform a get file operation, invoke the Local Storage binding with a `POST` method and the following JSON body: ```json { "operation": "get", "metadata": { "fileName": "myfile" } } ``` #### Example {{< tabs Windows Linux >}} {{% codetab %}} ```bash curl -d '{ \"operation\": \"get\", \"metadata\": { \"fileName\": \"myfile\" }}' http://localhost:/v1.0/bindings/ ``` {{% /codetab %}} {{% codetab %}} ```bash curl -d '{ "operation": "get", "metadata": { "fileName": "myfile" }}' \ http://localhost:/v1.0/bindings/ ``` {{% /codetab %}} {{< /tabs >}} #### Response The response body contains the value stored in the file. ### List files To perform a list files operation, invoke the Local Storage binding with a `POST` method and the following JSON body: ```json { "operation": "list" } ``` If you only want to list the files beneath a particular directory below the `rootPath`, specify the relative directory name as the `fileName` in the metadata. ```json { "operation": "list", "metadata": { "fileName": "my/cool/directory" } } ``` #### Example {{< tabs Windows Linux >}} {{% codetab %}} ```bash curl -d '{ \"operation\": \"list\", \"metadata\": { \"fileName\": \"my/cool/directory\" }}' http://localhost:/v1.0/bindings/ ``` {{% /codetab %}} {{% codetab %}} ```bash curl -d '{ "operation": "list", "metadata": { "fileName": "my/cool/directory" }}' \ http://localhost:/v1.0/bindings/ ``` {{% /codetab %}} {{< /tabs >}} #### Response The response is a JSON array of file names. ### Delete file To perform a delete file operation, invoke the Local Storage binding with a `POST` method and the following JSON body: ```json { "operation": "delete", "metadata": { "fileName": "myfile" } } ``` #### Example {{< tabs Windows Linux >}} {{% codetab %}} ```bash curl -d '{ \"operation\": \"delete\", \"metadata\": { \"fileName\": \"myfile\" }}' http://localhost:/v1.0/bindings/ ``` {{% /codetab %}} {{% codetab %}} ```bash curl -d '{ "operation": "delete", "metadata": { "fileName": "myfile" }}' \ http://localhost:/v1.0/bindings/ ``` {{% /codetab %}} {{< /tabs >}} #### Response An HTTP 204 (No Content) and empty body will be returned if successful. ## Metadata information By default the Local Storage output binding auto generates a UUID as the file name. It is configurable in the metadata property of the message. ```json { "data": "file content", "metadata": { "fileName": "filename.txt" }, "operation": "create" } ``` ## Related links - [Basic schema for a Dapr component]({{< ref component-schema >}}) - [Bindings building block]({{< ref bindings >}}) - [How-To: Use bindings to interface with external resources]({{< ref howto-bindings.md >}}) - [Bindings API reference]({{< ref bindings_api.md >}})