List of usage examples for io.vertx.core.http HttpServerResponse sendFile
@Fluent
default HttpServerResponse sendFile(String filename, Handler<AsyncResult<Void>> resultHandler)
From source file:de.braintags.netrelay.controller.filemanager.elfinder.command.impl.FileCommand.java
License:Open Source License
@Override public void execute(ElFinderContext efContext, JsonObject json, Handler<AsyncResult<ITarget>> handler) { String target = efContext.getParameter("target"); boolean download = STREAM.equals(efContext.getParameter("download")); ITarget fsi = super.findTarget(efContext, target); HttpServerResponse response = efContext.getRoutingContext().response(); if (download) { response.sendFile(fsi.getAbsolutePath(), res -> { if (res.failed()) { handler.handle(Future.failedFuture(res.cause())); } else { handler.handle(createFuture(fsi)); }//from w w w . java2s . c o m }); } else { String mime = fsi.getMimeType(); response.putHeader("content-type", mime + "; charset=utf-8"); response.end(fsi.readFile()); handler.handle(createFuture(fsi)); } }
From source file:org.entcore.common.storage.impl.FileStorage.java
License:Open Source License
@Override public void sendFile(String id, String downloadName, HttpServerRequest request, boolean inline, JsonObject metadata, Handler<AsyncResult<Void>> resultHandler) { final HttpServerResponse resp = request.response(); try {/* w ww . j av a 2 s .co m*/ final String path = getPath(id); if (!inline) { String name = FileUtils.getNameWithExtension(downloadName, metadata); resp.putHeader("Content-Disposition", "attachment; filename=\"" + name + "\""); } ETag.addHeader(resp, id); if (metadata != null && metadata.getString("content-type") != null) { resp.putHeader("Content-Type", metadata.getString("content-type")); } if (resultHandler != null) { resp.sendFile(path, resultHandler); } else { resp.sendFile(path, ar -> { if (ar.failed() && !request.response().ended()) { Renders.notFound(request); } }); } } catch (FileNotFoundException e) { resp.setStatusCode(404).setStatusMessage("Not Found").end(); if (resultHandler != null) { resultHandler.handle(new DefaultAsyncResult<>((Void) null)); } log.warn(e.getMessage(), e); } }
From source file:org.entcore.conversation.controllers.ConversationController.java
License:Open Source License
private void zipAllAttachments(final HttpServerRequest request, JsonArray files) { JsonObject tmp;//from w ww .j ava 2 s. c o m final FileSystem fs = vertx.fileSystem(); final List<String> fileIds = new ArrayList<>(); final JsonObject aliasFileName = new JsonObject(); final String zipDownloadName = I18n.getInstance().translate("attachments", I18n.DEFAULT_DOMAIN, I18n.acceptLanguage(request)) + ".zip"; final String zipDirectory = exportPath + File.separator + UUID.randomUUID().toString(); for (Object file : files) { tmp = (JsonObject) file; fileIds.add(tmp.getString("id")); aliasFileName.put(tmp.getString("id"), StringUtils.stripAccents(tmp.getString("filename"))); } fs.mkdirs(zipDirectory, new Handler<AsyncResult<Void>>() { private void delete(final String path) { fs.deleteRecursive(path, true, new Handler<AsyncResult<Void>>() { @Override public void handle(AsyncResult<Void> event) { if (event.failed()) log.error("[Conversation] Error deleting : " + path, event.cause()); } }); } @Override public void handle(AsyncResult<Void> event) { if (event.succeeded()) { final String zipfile = zipDirectory + ".zip"; storage.writeToFileSystem(fileIds.toArray(new String[0]), zipDirectory, aliasFileName, new Handler<JsonObject>() { @Override public void handle(JsonObject event) { if (!"ok".equals(event.getString("status"))) { log.error("[Conversation] Can't write to zip directory : " + event.getString("message")); delete(zipDirectory); badRequest(request); } else { Zip.getInstance().zipFolder(zipDirectory, zipfile, true, Deflater.NO_COMPRESSION, new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> event) { if (!"ok".equals(event.body().getString("status"))) { log.error("[Conversation] Zip folder " + zipDirectory + " error : " + event.body().getString("message")); delete(zipDirectory); badRequest(request); } else { final HttpServerResponse resp = request.response(); resp.putHeader("Content-Disposition", "attachment; filename=\"" + zipDownloadName + "\""); resp.putHeader("Content-Type", "application/zip; name=\"\" + zipDownloadName + \"\""); resp.sendFile(zipfile, new Handler<AsyncResult<Void>>() { public void handle( AsyncResult<Void> event) { if (event.failed()) log.error( "Error can't send the file: ", event.cause()); delete(zipfile); } }); } } }); } } }); } } }); }