The WFileUpload widget allows you to upload a local file to the server.
To properly use this widget you need to handle the uploaded()
or fileTooLarge()
signals; even when upload()
was not
called.
An oversized file will result in a fileTooLarge()
signal. The
default threshold value (128) for this signal is defined in the general
application settings file wt_config.xml
by the parameter
max-request-size
(Kb). See the Library overview for more details.
Also check using canUpload()
if upload()
will schedule
a new upload.
upload()
will not have any effect.
upload()
will start a new file
upload.
uploaded()
signal will be emitted. Otherwise a fileTooLarge()
signal will be emitted.
Try dropping files in the widget below. It accepts a maximum of 5 files. You can drop one or multiple files at a time.
void FileDrop() {
WFileDropWidget dropWidgetPtr = new WFileDropWidget();
final WFileDropWidget dropWidget = dropWidgetPtr;
dropWidget
.drop()
.addListener(
this,
(List<WFileDropWidget.File> files) -> {
final int maxFiles = 5;
int prevNbFiles = dropWidget.getUploads().size() - files.size();
for (int i = 0; i < files.size(); i++) {
if (prevNbFiles + i >= maxFiles) {
dropWidget.cancelUpload(files.get(i));
continue;
}
WContainerWidget block = new WContainerWidget((WContainerWidget) dropWidget);
block.setToolTip(files.get(i).getClientFileName());
block.addStyleClass("upload-block spinner");
}
if (dropWidget.getUploads().size() >= maxFiles) {
dropWidget.setAcceptDrops(false);
}
});
dropWidget
.uploaded()
.addListener(
this,
(WFileDropWidget.File file) -> {
List<WFileDropWidget.File> uploads = dropWidget.getUploads();
int idx = 0;
for (; idx != uploads.size(); ++idx) {
if (uploads.get(idx) == file) {
break;
}
}
dropWidget.getWidget(idx).removeStyleClass("spinner");
dropWidget.getWidget(idx).addStyleClass("ready");
});
dropWidget
.tooLarge()
.addListener(
this,
(WFileDropWidget.File file, Long size) -> {
List<WFileDropWidget.File> uploads = dropWidget.getUploads();
int idx = 0;
for (; idx != uploads.size(); ++idx) {
if (uploads.get(idx) == file) {
break;
}
}
dropWidget.getWidget(idx).removeStyleClass("spinner");
dropWidget.getWidget(idx).addStyleClass("failed");
});
dropWidget
.uploadFailed()
.addListener(
this,
(WFileDropWidget.File file) -> {
List<WFileDropWidget.File> uploads = dropWidget.getUploads();
int idx = 0;
for (; idx != uploads.size(); ++idx) {
if (uploads.get(idx) == file) {
break;
}
}
dropWidget.getWidget(idx).removeStyleClass("spinner");
dropWidget.getWidget(idx).addStyleClass("failed");
});
}