Les fonctions suivantes seront implémentées cette fois. ・ Créez une API pour télécharger des photos -Recevoir des données en binaire sans utiliser MultipartFile -Output le fichier dans le répertoire spécifié via Java ・ Le nom du fichier est automatiquement numéroté par année, mois, jour, heure, minute et seconde (le nom de la source de téléchargement n'est pas utilisé). -Obtenir des informations binaires et obtenir le format compressé (extension) de l'image Pour cette partie, je me suis référé aux informations suivantes. → Déterminez le type d'image à partir de données binaires
Controller
java:com.example.UsersController.java
@RequestMapping(path = "/users/upload", method = RequestMethod.POST)
public void upload(InputStream req) throws IOException {
ByteArrayOutputStream byteos = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
int size = 0;
while ((size = req.read(buf, 0, buf.length)) != -1) {
byteos.write(buf, 0, size);
}
String filename = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS").format(LocalDateTime.now());
Path uploadfile = Paths.get("Users/demo-kusa/image" + filename
+ "." + getFormat(byteos.toByteArray()));
try (OutputStream os = Files.newOutputStream(uploadfile, StandardOpenOption.CREATE)) {
os.write(byteos.toByteArray());
} catch (IOException ex) {
System.err.println(ex);
}
}
** Voir l'article lié pour ImageTypeCheck.java ** (J'ai fait quelques modifications, mais cela a fonctionné tel quel) ImageType.java
Lors de l'envoi de données binaires, il existe plusieurs méthodes telles que les commandes client http telles que curl, javascript et REST client, mais cette fois j'ai utilisé Postman.
Après avoir écrit jusqu'à présent, j'ai remarqué que IOException est essayé et jette dans Controller. Je vais le refactoriser à une date ultérieure. Bien qu'il ait un but, il gaspille des ressources en passant par ByteArrayOutputStream, alors examinez-le. .. github kaikusakari/spring_crud
Recommended Posts