Upload files in Java e Vert.x

Mattepuffo's logo
Upload files in Java e Vert.x

Upload files in Java e Vert.x

Vert.x web ci mette a disposizione l'oggetto FileUpload per il caricamento dei file.

In questo articolo vediamo come usarlo.

Non ci sono librerie da aggiungere, ma c'è da considerare questo:

  • di default FileUpload crea un file temporaneo dentro alla directory file-uploads
  • il file viene creato senza estensione
  • quindi poi tocca a noi spostare e rinominare il file

Questo il mio controller:

import io.vertx.ext.web.FileUpload;
import io.vertx.ext.web.RoutingContext;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;

public class UploadController {

  public void add(RoutingContext routingContext) {
    for (FileUpload f : routingContext.fileUploads()) {
      String nome = f.fileName();
      String tmpNome = f.uploadedFileName();

      try {
        Files.move(Paths.get(tmpNome), Paths.get("detinazione/file/" + nome), StandardCopyOption.REPLACE_EXISTING);

        // TUA RISPOSTA
      } catch (IOException err) {
        // RISPOSTA IN CASO DI ERRORE
      }
    }
  }

}

Per lo spostamento abbiamo usato Files.move del pagkace NIO.

A questo punto non ci resta che aggiungere il controller come faccio di solito, impostandolo con metodo post:

UploadController uploadController = new UploadController();
Router router = Router.router(vertx);
router.post("/upload/add").handler(uploadController::add);

// ECCETERA

Per l'invio del file lato client ho usato form-data.

Enjoy!


Condividi

Commentami!