- Expédié
- 23 septembre 2026 à 02:35 UTC
- Auteur
- Kamo
- Commite
- d1a8762
/download a chargé l'ensemble du fichier dans un octet par ImageService.downloadDocument avant /rour le téléchargement en vrac a construit l'ensemble du zip (ou le PDF fusionné) en un seul octet dans DocumentPrepareService avant réponse; les téléchargements vont jusqu'à 3 Go par rapport aux 1,4oud de ce service le culot, et le culot de 100 id de téléchargement en vrac n'avait pas de limite de taille derrière lui - 100 documents non coiffés pourraient demander des centaines de gigaoctets en une seule demande. buildz-ip également a écrit Img.fileName directement dans a zipEntry sans assainissement, donc un document renommé en quelque chose comme (le fichierName est contrôlé par l'utilisateur et le texte libre, changé via /update/filename/-imgId-) a produit une archive dont la rubrique, ouverte par un extracteur qui n'est pas se prémunir contre la glissière, écrit en dehors du répertoire cible sur le système d'exploitation qui fait le extraction. - / télécharger maintenant les flux via MinIOStorageService.openRange et StreamingResponseBody, exactement comme /stream l'a déjà fait, au lieu de mettre en mémoire tampon l'ensemble du fichier. (Drops ImageService.downloadDocument's dl-d'abord/dl-d'effet secondaire de la comptabilité et confirmé mort par grep: rien dans le backend Java J'ai lu Img.dlFirstDate/dlLastDate, ne les écrit jamais. L'audit ImgLogLogTéléchargement séparé row via enregistrementDownloadEvent, qui est lu en retour par le panneau de téléchargement, est inchangé.) - /rouler les dédupes demandé des ids avant le culot de 100 id et le travail per-item. - /roffload refuse purement et simplement (400) une fois que les documents sélectionnés ont été combinés Img.fileSize passe 500 Mo, plutôt que de tenter la fusion/la fermeture à glissière et le risque d'un OOM - refusé, pas silencieusement tronqué, car l'exhaustivité est le point d'un EXPORTATION en vrac. - buildz zip désinfecte chaque nom d'entrée à son segment de chemin final (s'effondre à la fois / et -, depuis l'extracteur peut être sur un OS que ce serveur ne contrôle pas), en fermant l'intervalle zip-lip. NON FAIT, rapporté comme un écart connu: buildz/mergePdfs continue de construire leur résultat en octet[------------------------------------------ avant de répondre plutôt que de le retransmettre directement à la réponse HTTP - le plafond de 500 MB maintenant limite cela à un plafond connu (à partir de l'imreté), mais il n'est pas éliminé. les convertir en écrire dans un flux de sortie fourni par l'appelant laisse/bulk-download le flux aussi; différé parce qu'il Modification des signatures publiques de DocumentPrepareService, ondullant en trois fichiers de test existants (en tire actuellement les méthodes de retour de l'octet, pour une gravité MEDIUM, déjà plafonnée Reste - un appel de portée délibéré, et non un oubli. Nouveaux tests: 7 cas d'assainissement et trois cas ajouté à ImagingControllerMediaAssocTest (en streaming-not-buffering, id dedupe, la calotte). DÉCLAmé de la mutation: l'inversion de ImagingController.java à son état de préfixe transforme les trois nouveaux cas de contrôleur rouge; retournement de l'emballage en arrière-tête zippé Nom à "nom de retour"; virage 5 des 7 zip-glissards cas rouges (le 6ème, un nom de fichier ordinaire déjà sûr, n'est pas affecté correctement dans les deux cas). Suite complète: 741 tests verts (contre 731; 10 nouveaux).
