Skip to content

Latest commit

 

History

History
210 lines (146 loc) · 5.58 KB

filestorageupload.md

File metadata and controls

210 lines (146 loc) · 5.58 KB

FileStorageUpload

Introduction

FileStorageUpload is a widget in Supervisely's web interface that allows users to upload files directly to Team files by given path. With this widget, users can easily transfer data from their local machine to Team files without the need for any external tools or commands. The widget supports multiple file uploads and progress tracking, making the process of transferring data efficient and streamlined.

Function signature

FileStorageUpload(
    team_id=435,
    path="folder",
    change_name_if_conflict=False,
    widget_id=None,
)

default

Parameters

Parameters Type Description
team_id int Team ID
path str Set destination path in Team files to upload files/folders
change_name_if_conflict bool Whether change destination folder name if exists
widget_id str ID of the widget

team_id

Team ID

type: int

path

Set destination path in Team files to upload files/folders

type: str

default value: "folder"

file_upload = FileStorageUpload(
    team_id=435,
    path="folder",
)

team_id_and_path

change_name_if_conflict

Whether change destination folder name if exists.

type: bool

default value: False

file_upload = FileStorageUpload(
    team_id=435,
    path="folder",
    change_name_if_conflict=True
)

change_name_if_conflict

widget_id

ID of the widget

type: str

default value: None

Methods and attributes

Attributes and Methods Description
path Get or set path property to upload files.
set_path(path: str) Set path to upload files to.
get_uploaded_paths() Get list of path in Team files where files/folders uploaded.

Mini App Example

You can find this example in our Github repository:

supervisely-ecosystem/ui-widgets-demos/controls/007_file_storage_upload/src/main.py

Import libraries

import os

from dotenv import load_dotenv
import supervisely as sly
from supervisely.app.widgets import Button, Card, Container, Field
from supervisely.app.widgets import FileStorageUpload, Flexbox, Input, Text

Init API client

First, we load environment variables with credentials and init API for communicating with Supervisely Instance:

load_dotenv("local.env")
load_dotenv(os.path.expanduser("~/supervisely.env"))

api = sly.Api()

Get team_id from environment variables

team_id = sly.env.team_id()

Initialize FileStorageUpload widget

file_upload_1 = FileStorageUpload(
    team_id=team_id,
    path="folder",
)

file_upload_2 = FileStorageUpload(
    team_id=team_id,
    path="folder",
    change_name_if_conflict=True,
)

Create Field, Button, Text, Input widgets we will use in UI for demo

upload_1 = Field(
    title="Existing directory",
    description="Upload files/folders to an existing directory in Team files",
    content=file_upload_1,
)


upload_2 = Field(
    title="New path",
    description="Enter a new path and set it by clicking on button",
    content=file_upload_2,
)

input = Input(placeholder="Please enter path")
button_change_path = Button("Change path name")
button_get_paths_1 = Button("Get upoaded paths")
button_get_paths_2 = Button("Get upoaded paths")

text = Text()

Create app layout

Prepare a layout for app using Card widget with the content parameter and place widget that we've just created in the Container widget.

upload_container = Container([upload_1, upload_2])
btns_box = Flexbox([button_change_path, button_get_paths_1, button_get_paths_2])
controls_container = Container([input, btns_box, text])

card = Card(
    title="File Storage Upload",
    content=Container([upload_container, controls_container]),
)

layout = Container(widgets=[card])

Create app using layout

Create an app object with layout parameter.

app = sly.Application(layout=layout)

Add functions to control widgets from code

@button_change_path.click
def change_path():
    path = input.get_value()
    file_upload_2.set_path(path)
    file_upload_1.set_path(path)
    text.status = "success"
    text.text = "Upload path has been changed."


@button_get_paths_1.click
def show_uploaded_paths():
    paths = file_upload_1.get_uploaded_paths()
    text.status = "text"
    text.text = "<br>".join(paths)


@button_get_paths_2.click
def show_uploaded_paths():
    paths = file_upload_2.get_uploaded_paths()
    text.status = "text"
    text.text = "<br>".join(paths)

layout