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,
)

Parameters
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",
)

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
)

widget_id
ID of the widget
type: str
default value: None
Methods and attributes
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
from environment variablesteam_id = sly.env.team_id()
Initialize FileStorageUpload
widget
FileStorageUpload
widgetfile_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
Field
, Button
, Text
, Input
widgets we will use in UI for demoupload_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)

Last updated
Was this helpful?