PROJET AUTOBLOG


Shaarli - le hollandais volant

Site original : Shaarli - le hollandais volant

⇐ retour index

CURL: Poster des données et des fichiers via un formulaire | Mon pense-bête - Liens Ecyseo - Le Hollandais Volant - Liens Ecyseo - Le Hollandais Volant - Liens Ecyseo

lundi 24 août 2015 à 15:33
La page : https://transfer.sh/ utilise un formulaire avec la méthode "PUT" (au lieu de GET ou POST), que je ne connaissais pas, je dois dire.

Apparemment, elle est plus adapté pour les fichiers, alors qu’un fichier envoyé en POST correspond d’avantage à un fichier joint au formulaire qu’un véritable moyen pour transférer des uniquement des fichiers.

Sur ce site là, la limite d’envoi de fichier semble donc vraiment se trouver à 5 Go, sans besoin de découpage en morceaux plus petits.


« Encore une question : la découpe des fichiers, tu la fais en javascript ? »

Oui, en JS : quand tu places un fichier sur une page Web, JS peut très simplement en trouver le code Base64 correspondant. C’est ce que je fais sur cette page : et la fonction JS correspond à la seule méthode « .readAsDataURL » appliquée sur un fichier (le code JS de la page fait 6 lignes). C’est cependant *très* lent avec des gros fichiers (> 10 Mo), mais très adapté pour des fichiers de quelques ko à ~1 Mo (taille typique d’un document joint à un email, par exemple).

À partir de là, tu peux envoyer ce base64 ligne par ligne ou dix lignes par dix lignes, à ta convenance (moins il y a de requêtes, mieux c’est). Il faut juste que PHP derrière sache ce qui se passe et puisse recoller les morceaux, et reconstituer le fichier quand tous les bouts sont envoyés.

J’ajoute quand même que tu n’est pas obligé de passer par Base64 : tu peux très bien lire le fichier directement en binaire, et découper ça en morceaux plus petits, puis traiter ces données en PHP et tout mettre dans un fichier directement.
Mais je pense que c’est plus risqué et moins pratique (mais plus rapide, sur tous les plans) : au moins en base64 on travaille avec des chaînes de caractères, donc on sait ce qu’on manipule et le découpage est facile à effectuer.


« Si oui, l'encodage en base 64 via javascript plante à partir d'une certaine taille (pour des fichiers de 1 Go par exemple). Comment tu t'y prendrais ? »

Pour un fichier de 1 Go, j’utiliserais FTP : c’est fait pour ça.

Si je n’ai pas d’autre moyens que de passer par un site web (serveur Apache/PHP):
— soit il faut que le serveur accepte des gros fichier (limite d’upload fixée à 1 Go)
— soit je dois découper le fichier manuellement et créer un script sur le serveur qui va ensuite recoller les morceaux quand ils seront tous envoyés.
— (permalink)