Mercurial > hg > monetdb-java
changeset 515:7bbcff2c775b onclient
Also implement downloadTo(), and use it in FileTransferHandler
author | Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com> |
---|---|
date | Mon, 23 Aug 2021 09:43:35 +0200 (2021-08-23) |
parents | 443780d71bae |
children | 704a11b93e6b |
files | src/main/java/org/monetdb/jdbc/MonetConnection.java src/main/java/org/monetdb/util/FileTransferHandler.java |
diffstat | 2 files changed, 28 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/main/java/org/monetdb/jdbc/MonetConnection.java +++ b/src/main/java/org/monetdb/jdbc/MonetConnection.java @@ -3381,6 +3381,18 @@ public class MonetConnection } return stream; } + + public void downloadTo(OutputStream stream) throws IOException { + InputStream s = getStream(); + byte[] buffer = new byte[65536]; + while (true) { + int nread = s.read(buffer); + if (nread < 0) + break; + stream.write(buffer, 0, nread); + } + } + public boolean hasBeenUsed() { return error != null || stream != null; }
--- a/src/main/java/org/monetdb/util/FileTransferHandler.java +++ b/src/main/java/org/monetdb/util/FileTransferHandler.java @@ -1,6 +1,7 @@ package org.monetdb.util; import org.monetdb.jdbc.MonetConnection; +import org.monetdb.jdbc.MonetDownloadHandler; import org.monetdb.jdbc.MonetUploadHandler; import java.io.BufferedReader; @@ -13,7 +14,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.StandardOpenOption; -public class FileTransferHandler implements MonetUploadHandler { +public class FileTransferHandler implements MonetUploadHandler, MonetDownloadHandler { private final Path root; private final boolean utf8Encoded; @@ -44,4 +45,18 @@ public class FileTransferHandler impleme handle.uploadFrom(Files.newInputStream(path)); } } + + public void handleDownload(MonetConnection.Download handle, String name, boolean textMode) throws IOException { + Path path = root.resolve(name).normalize(); + if (!path.startsWith(root)) { + handle.sendError("File is not in upload directory"); + return; + } + if (!Files.exists(path)) { + handle.sendError("File exists: " + name); + return; + } + OutputStream outputStream = Files.newOutputStream(path, StandardOpenOption.CREATE_NEW); + + } }