+ public void performFinish() {
+ // boolean success = uploadFile.performUpload();
+ // if (!success)
+ // throw new ArgeoException("Cannot upload file named "
+ // + uploadFile.getPath());
+ }
+
+ private String startUploadReceiver() {
+ MyFileUploadReceiver receiver = new MyFileUploadReceiver();
+ FileUploadHandler uploadHandler = new FileUploadHandler(receiver);
+ uploadHandler.addUploadListener(new FileUploadListener() {
+
+ public void uploadProgress(FileUploadEvent event) {
+ // handle upload progress
+ }
+
+ public void uploadFailed(FileUploadEvent event) {
+ UploadFileWizardPage.this.setErrorMessage("upload failed: "
+ + event.getException());
+ }
+
+ public void uploadFinished(FileUploadEvent event) {
+
+ fileNameLabel.getDisplay().asyncExec(new Runnable() {
+ public void run() {
+ // UploadFileWizardPage.this.getContainer()
+ // .updateButtons();
+ pushSession.stop();
+ }
+ });
+
+ // for (FileDetails file : event.getFileDetails()) {
+ // // addToLog("received: " + file.getFileName());
+ // }
+ }
+ });
+ return uploadHandler.getUploadUrl();
+ }
+
+ private class MyFileUploadReceiver extends FileUploadReceiver {
+
+ private static final String TEMP_FILE_PREFIX = "fileupload_";
+
+ @Override
+ public void receive(InputStream dataStream, FileDetails details)
+ throws IOException {
+ File result = File.createTempFile(TEMP_FILE_PREFIX, "");
+ FileOutputStream outputStream = new FileOutputStream(result);
+ try {
+ copy(dataStream, outputStream);
+ } finally {
+ dataStream.close();
+ outputStream.close();
+ }
+ file = result;
+ }
+ }
+
+ private static void copy(InputStream inputStream, OutputStream outputStream)
+ throws IOException {
+ byte[] buffer = new byte[8192];
+ boolean finished = false;
+ while (!finished) {
+ int bytesRead = inputStream.read(buffer);
+ if (bytesRead != -1) {
+ outputStream.write(buffer, 0, bytesRead);
+ } else {
+ finished = true;
+ }
+ }
+ }
+
+ /**
+ * The full path including the directory and file drive are only returned,
+ * if the browser supports reading this properties
+ *
+ * @return The full file name of the last uploaded file including the file
+ * path as selected by the user on his local machine.
+ */