Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Erreur aléatoire quand on POST des fichiers dans un container LDP #834

Closed
srosset81 opened this issue Aug 9, 2021 · 10 comments
Closed
Assignees
Labels
bug Something isn't working

Comments

@srosset81
Copy link
Contributor

Remonté par @tawytest

unnamed

L'erreur se produit ici:
https://github.com/assemblee-virtuelle/semapps/blob/master/src/middleware/packages/middlewares/index.js#L109

Une idée @simonLouvet ?

@srosset81 srosset81 added the bug Something isn't working label Aug 9, 2021
@srosset81
Copy link
Contributor Author

srosset81 commented Aug 9, 2021

Il semble que c'est lié à la librairie dicer utilisée par busboy. La librairie apparaît dans l'erreur.

mscdex/busboy#250

Une PR a été proposée mais n'a pas été intégrée:

mscdex/dicer#22

Malheureusement la librairie busboy n'est plus mise à jour depuis 2 ans :-( Mauvais choix de ce côté-là, on risque de n'avoir pas d'autre choix que de réécrire tout ce code avec une autre libriaire...

@simonLouvet simonLouvet self-assigned this Aug 31, 2021
@simonLouvet
Copy link
Contributor

Je vais refondre l'upload en changeant de librairie

@srosset81
Copy link
Contributor Author

Pour info j'ai essayé de forcer l'usage de la PR en ajoutant cette ligne au package.json

"dicer": "RolandHeinze/dicer#header-parser-bug",

Malheureusement cette technique ne marche pas. Le package est installé depuis Github mais busboy continue à utiliser la librairie publiée sur NPM (en la mettant dans son dossier propre node_modules). J'imagine qu'il doit y avoir une solution pour forcer l'usage d'un repo, mais je ne l'ai pas trouvée.

@srosset81
Copy link
Contributor Author

Je vais refondre l'upload en changeant de librairie

Dispo pour qu'on parle du choix de la librairie. J'avais regardé un peu et presque tout le monde semble utiliser busboy. :-/

@simonLouvet
Copy link
Contributor

@srosset81 est ce que tu connais le pseudo de thomas? Archipelago n'utilise pas busboy par ce qu'il n'y a pas de multipart. de plus il est possible que #844 resolve le probleme car busboy pouvait ne pas apprécier que la request soit répondu au navigateur alors qu'il était en train d’écrire sur le disque.

@srosset81
Copy link
Contributor Author

Thomas c'est @tawytest

Donc Archipelago utilise une autre méthode que Thomas pour uploader les fichiers ? Il suffirait au pire qu'il utilise la même méthode que nous pour que le problème se règle ? (si ton fix n'est pas suffisant)

@simonLouvet
Copy link
Contributor

Oui a priori, s'il utilise la même manière d'upload (pas de multipart), ça contournera le problème. Je voudrais voir avec lui pour expliquer tout ça, essayer de conserver le multipart ; contourner au pire

@Spiff77
Copy link

Spiff77 commented Sep 21, 2021

Hello, @simonLouvet C'est moi Thomas ;), l'autre pseudo n'est pas le bon, je viens juste de voir ce message la. Hésites pas a prendre contact sur ce compte la si besoin.

@simonLouvet
Copy link
Contributor

salut @Spiff77 . Je ne sais pas ou prendre contact ailleurs que cette issue. Est ce que tu a un compte sur le chat de communs?
Concernant ce probleme d'upload, je suppose que tu passe par du multipart car busboy n'est utilisé que dans ce cas.
Il est probable qu'un fonctionnement inadéquat du container de fichier revoyait la requette http alors que l'upload n'etait pas terminé et que cela cause cette anomalie.
solution 1 : mettre à jour les dépendances @semapps essayer de reproduire l’anomalie
solution 2 : ne plus utiliser le multipart et poster en direct le fichier. voir les exemples.

@Spiff77
Copy link

Spiff77 commented Oct 12, 2021

Hello,

Du coup nikel, ca fonctionne parfaitement:
`

const file:any =  this.fileInput.nativeElement.files[0];
const httpUploadOptions = {
  headers: new HttpHeaders({
    'Content-Type': file.type
  })
}

return this.dataService.postFile('files', file, httpUploadOptions)

`

Ne pas utiliser de FormData comme mentionné sur la plupart des exemples d'upload de fichier avec Angular.

Merci!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants