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!
java vertx fileupload
Commentami!