Smart Gwt File Upload Examples
Public class FormPanelExample implements EntryPoint { public void onModuleLoad() { // Create a FormPanel and point it at a service. Final FormPanel form = new FormPanel(); form.setAction('/myFormHandler'); // Because we're going to add a FileUpload widget, we'll need to set the // form to use the POST.
GXT & GWT Examples showing how to drag and drop file and upload it. Using GWT JSNI or JsInterop2.
ElementalFileDndUploadExample.java
| importcom.google.gwt.core.client.EntryPoint; |
| importcom.google.gwt.core.client.GWT; |
| importcom.google.gwt.user.client.ui.RootPanel; |
| importcom.sencha.gxt.core.client.dom.XElement; |
| importcom.sencha.gxt.widget.core.client.container.FlowLayoutContainer; |
| importelemental2.dom.DataTransfer; |
| importelemental2.dom.DomGlobal; |
| importelemental2.dom.DragEvent; |
| importelemental2.dom.Element; |
| importelemental2.dom.Event; |
| importelemental2.dom.EventListener; |
| importelemental2.dom.File; |
| importelemental2.dom.FileList; |
| importelemental2.dom.FormData; |
| importelemental2.dom.HTMLDocument; |
| importelemental2.dom.XMLHttpRequest; |
| /** |
| * https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/File_drag_and_drop |
| * |
| * https://github.com/google/elemental2 |
| * |
| * <inherits name='elemental2.core.Core'/> |
| * <inherits name='elemental2.dom.Dom'/> |
| */ |
| publicclassElementalFileDndUploadExampleimplementsEntryPoint { |
| @Override |
| publicvoidonModuleLoad() { |
| HTMLDocument document =DomGlobal.document; |
| Element divElement = document.createElement('div'); |
| divElement.setAttribute('style', 'border: 1px dashed red; width: 300px; height: 300px;'); |
| divElement.addEventListener('dragover', newEventListener() { |
| @Override |
| publicvoidhandleEvent(Eventevt) { |
| GWT.log('dragOver'); |
| evt.stopPropagation(); |
| evt.preventDefault(); |
| DragEvent dragEvent = (DragEvent) evt; |
| DataTransfer dataTransfer = dragEvent.dataTransfer; |
| dataTransfer.dropEffect ='copy'; |
| } |
| }); |
| divElement.addEventListener('drop', newEventListener() { |
| @Override |
| publicvoidhandleEvent(Eventevt) { |
| GWT.log('drop'); |
| evt.stopPropagation(); |
| evt.preventDefault(); |
| DragEvent dragEvent = (DragEvent) evt; |
| DataTransfer dataTransfer = dragEvent.dataTransfer; |
| FileList files = dataTransfer.files; |
| for (int i=0; i < files.length; i++) { |
| File file = files.item(i); |
| GWT.log('file: '+ file.name); |
| upload(file); |
| } |
| } |
| }); |
| divElement.addEventListener('dragEnd', newEventListener() { |
| @Override |
| publicvoidhandleEvent(Eventevt) { |
| GWT.log('dragEnd'); |
| } |
| }); |
| FlowLayoutContainer flc =newFlowLayoutContainer(); |
| XElement flcEl = flc.getElement(); |
| flcEl.getStyle().setProperty('border', '1px solid purple'); |
| appendTo(flcEl, divElement); |
| RootPanel.get().add(flc); |
| } |
| privatenativevoidappendTo(XElementtarget, Elementel) /*-{ |
| target.appendChild(el); |
| }-*/; |
| protectedvoidupload(Filefile) { |
| FormData formData =newFormData(); |
| formData.append('file', file); |
| XMLHttpRequest xmlHttpRequest =newXMLHttpRequest(); |
| xmlHttpRequest.open('POST', '/'); |
| xmlHttpRequest.send(formData); |
| } |
| } |
JSNIFileDndUploadExample.java
| importcom.google.gwt.core.client.EntryPoint; |
| importcom.google.gwt.user.client.ui.RootPanel; |
| importcom.sencha.gxt.core.client.dom.XElement; |
| importcom.sencha.gxt.widget.core.client.container.FlowLayoutContainer; |
| importelemental2.dom.File; |
| /** |
| * https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/File_drag_and_drop |
| * |
| * https://github.com/google/elemental2 |
| * |
| * <inherits name='elemental2.core.Core'/> <inherits name='elemental2.dom.Dom'/> |
| */ |
| publicclassJSNIFileDndUploadExampleimplementsEntryPoint { |
| @Override |
| publicvoidonModuleLoad() { |
| FlowLayoutContainer flc =newFlowLayoutContainer(); |
| flc.setPixelSize(300, 300); |
| flc.getElement().getStyle().setProperty('border', '1px solid purple'); |
| createDropTarget(flc.getElement()); |
| RootPanel.get().add(flc); |
| } |
| publicinterfaceFileUploadHandler { |
| voidupload(Filefile); |
| } |
| privatenativevoidcreateDropTarget(XElementdivElement) /*-{ |
| divElement.addEventListener('dragover', function(event) { |
| console.log('dragover'); |
| event.preventDefault(); |
| event.dropEffect = 'copy'; |
| }, false); |
| divElement.addEventListener('drop', function(event) { |
| console.log('drop'); |
| event.preventDefault(); |
| var files = event.dataTransfer.files; |
| for (var i=0; i < files.length; i++) { |
| var file = files.item(i); |
| console.log('file: ' + file.name); |
| var formData = new FormData(); |
| formData.append('file', file); |
| var xmlHttpRequest = new XMLHttpRequest(); |
| xmlHttpRequest.open('POST', '/'); |
| xmlHttpRequest.send(formData); |
| } |
| }, false); |
| }-*/; |
| } |
commented Nov 20, 2017


Demo |
File Upload Sites
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment
