Upload de fichier important (3 à 5 Mo) par sftp

Bonjour à tous,
Je suis coincé … l'app que je développe actuellement a besoin d'envoyer par sftp des photos sur un serveur (SSH) appartenant à un imprimeur. La définition des photos ne peut être "dégradée" (ni resize - ni compression) … car l'impression sera en ultra-grand format.
J'ai envisagé d'utiliser le framework NMSSH - après tests, impossible d'uploader plus de 500 Ko …au delà j'ai le message NMSSH: libssh2_sftp_write failed (Error -43)….et ce même avec un setBufferSize poussé au max : 512 * 1024

J'ai vu qu'il existait Black Raccoon … mais je crains d'être confronté à la même limitation …

Avez-vous d'autres solutions à me proposer ?
Par avance un immense merci pour le temps que vous consacrerez à me répondre.
OldNick

Mots clés:

Réponses

  • PyrohPyroh Membre

    Avant de me lancer dans des choses bizarres et tester des libs de second choix je commencerai par tester d'envoyer des fichiers de test avec CURL. Si ça marche pas c'est de leur côté. Dans le cas contraire c'est pour toi 🎉

    La piste la plus probable est que la libssh2 incluse dans le NMSSH est une super vielle version. Cinq ans d'après GitHub. Tu peux commencer par la mettre à jour dans un fork de NMSSH et après on ira plus loin si il faut.

  • Merci Pyroh pour tes suggestions ! Je n'ai jamais manipulé le fork d'un framework ...c'est l'occaz ...en espérant ne pas y passer trop de temps ...car ma deadline approche ...

  • DrakenDraken Membre
    mai 2021 modifié #4

    La définition des photos ne peut être "dégradée" (ni resize - ni compression)

    Le png est un format de compression non destructif, contrairement au jpg. cela peut éventuellement t'aider.

  • PyrohPyroh Membre

    @OldNick a dit :
    Merci Pyroh pour tes suggestions ! Je n'ai jamais manipulé le fork d'un framework ...c'est l'occaz ...en espérant ne pas y passer trop de temps ...car ma deadline approche ...

    Ça n'a pas l'air bien méchant la libssh2 est directement intégrée dans le framework. Il "suffit" de mettre la nouvelle version et recompiler le tout.

    iTerm2 utilise la lib et a visiblement un fork avec les librairies un peu plus à jour. Attention de bien utiliser la branche iTerm2.
    J'ai pas trop creusé mais si la main branch d'iTerm l'utilise ça sera bon pour toi aussi.

    Si t'as besoin et que t'es cours niveau délais j'ai de quoi caser quelques heures de prestation à prix correct 😉

  • --> Pyroh : je vais zieuter tout ça demain matin ...si je ne m'en sors pas, je te demanderais tes tarifs 🤓

  • PyrohPyroh Membre

    @OldNick a dit :
    --> Pyroh : je vais zieuter tout ça demain matin ...si je ne m'en sors pas, je te demanderais tes tarifs 🤓

    Si besoin je suis dispo par MP. Mais avec le fork iTerm tu devrais t'en sorti.

  • @Pyroh a dit :

    @OldNick a dit :
    --> Pyroh : je vais zieuter tout ça demain matin ...si je ne m'en sors pas, je te demanderais tes tarifs 🤓

    Si besoin je suis dispo par MP. Mais avec le fork iTerm tu devrais t'en sorti.

    --> Pyroh : alors j'ai zieuté ... iTerm2 s'appuie sur le framework NMSSH qui lui-même s'appuie sur Libssh2 - cette lib peut être recompilée via le script iSSH2.sh (script qui pointe sur la version 1.9.0 de Libssh2 (qui est la dernière en date de Juin 2019)... ainsi que la version 1.1.1 de OpenSSL). J'ai donc soumis ce script ... voici les résultats :
    - OK pour OpenSSL ( "building done") 😊
    - KO pour Libssh2 😕 ... ("build failed" sans autres logs ) ...pourtant c'est la lib qui nous intéresse ....
    Il semblerait que je ne sois pas le seul à rencontrer des problèmes avec la soumission de ce script : https://github.com/Frugghi/iSSH2/issues/5
    Pour info : j'ai soumis ce script via le Terminal de mon MBA M1 - le repertoire "iSSH2-master" contenant ce script a été "posé" dans le répertoire /Pods/NMSSH de mon projet Xcode ...est-ce que le pb viendrait de là ... je ne suis pas assez compétent pour répondre ... si tu as une idée ...🙏🙏🙏

  • PyrohPyroh Membre

    Pourquoi tu t'embête à recompiler la libssh2 ? Elle est fournie directement avec NMSSH pour macOS et iOS.
    Qu'est-ce que tu utilise pour intégrer les libs dans ton projet ?

  • @Pyroh a dit :
    Pourquoi tu t'embête à recompiler la libssh2 ? Elle est fournie directement avec NMSSH pour macOS et iOS.
    Qu'est-ce que tu utilise pour intégrer les libs dans ton projet ?

    J'ai intégré NMSSH via CocoaPods ...dans le répertoire "Pods/NMSSH/Frameworks" de mon projet Xcode, je vois apparaitre "libssh2.a" ... et - quitte à passer pour un couillon - ne me dis pas qu'un simple drag & drop d'une version plus récente de "libssh2.a" ferait l'affaire ...

  • PyrohPyroh Membre

    Alors, ouais, un drag&drop avec la nouvelle version suffirait. C'est plus compliqué après pour la livraison des sources au client.

    Pour la compilation d'iSSH2 j'ai testé et ça fonctionne avec :

    • ./iSSH2.sh -p iphoneos -v 12.0 pour la version iOS (iOS 12 mini mais tu peux changer selon le besoin)
    • ./iSSH2.sh -p macosx -v 10.15 -a "arm64 x86_64" pour la version macOS

    Après tu copie/colle les *.a dans les dossiers correspondants et ça devrait fonctionner 😉

  • --> Pyroh : merci pour tout ce que tu fais pour moi !
    Bon ...j'ai soumis le script avec ta commande pour la version iOS (./iSSH2.sh -p iphoneos -v 12.0) ... "build failed" pour Libssh2 ( alors que nickel pour OpenSSL) ... je cherche je cherche ...que peut-il bien se passer ...? Juste pour info : où positionnes-tu le repertoire iSSH2-master ?

  • PyrohPyroh Membre
    mai 2021 modifié #13

    C'est bizarre ça. Ça doit être une histoire de version. Pour ma part c'est :

    • macOS : 11.2.2
    • Xcode : 12.5 (12E262)

    Pour le répertoire tu le mets où tu veux tu vas de toute façon copier les fichiers de sortie dans le dossier de ton projet. Moi j'ai cloné le repo là où je clone tous les repos que je clone, ça n'a pas d'importance en fait. J'éviterai de le mettre dans le dossier du projet vu que seuls les fichiers de sortie nous intéressent.

  • Etrange en effet ... moi j'ai :

    • macOS : 11.3.1
    • Xcode : 12.5 (12E262)
      Bon je vais creuser ce WE si la météo le permet 🧐 ... merci à toi en tout cas et bon WE ! Je te tiens au courant.
  • OldNickOldNick Membre
    mai 2021 modifié #15

    --> Pyroh : j'ai enfin réussi à recompiler (connerie que je n'ose avouer ...un de mes répertoires avait un naming contenant un espace ...depuis le temps que je me dis que ça ne se fait pas ...) ...bref ... j'ai donc drag & droppé les nouveaux repertoires libssh2 et lib dans mon projet ... ça compile ...je test ... envoi bloqué à 360 Ko ...et toujours l'erreur "libssh2_sftp_write failed (Error -43)" ... :'(

  • @OldNick a dit :
    --> Pyroh : j'ai enfin réussi à recompiler (connerie que je n'ose avouer ...un de mes répertoires avait un naming contenant un espace ...depuis le temps que je me dis que ça ne se fait pas ...) ...bref ... j'ai donc drag & droppé les nouveaux repertoires libssh2 et lib dans mon projet ... ça compile ...je test ... envoi bloqué à 360 Ko ...et toujours l'erreur "libssh2_sftp_write failed (Error -43)" ... :'(

    J'ai compris mon erreur ... le sftp envoie par paquet (calibré via le setBufferSize) ... je sortais de la boucle d'envoi à l'issue du 1er paquet en déconnectant ma session sftp ... L'homme sage (c'est moi) apprend de ses erreurs, l'homme plus sage (ce sera vous en lisant ce post) apprend des erreurs des autres 😗😗😗

  • CéroceCéroce Membre, Modérateur

    Et les neuneus comme moi tombent par chance sur un message laissé sur un vague forum il y a 5 ans qui leur permet de résoudre leur problème!

  • PyrohPyroh Membre

    Les forums c'est un peu notre mémoire collective. Sans tout ça on serait vraiment bien emmerdé dans notre métier.

    Quoi qu'il en soit je suis bien heureux de voir que ton souci est réglé @OldNick !

    PS: @Céroce c'est pas plutôt neuneux le pluriel de neuneu ?

  • CéroceCéroce Membre, Modérateur

    @Pyroh a dit :
    PS: @Céroce c'est pas plutôt neuneux le pluriel de neuneu ?

    Tu m'as mis le doute, mais il semble que non.

  • PyrohPyroh Membre

    @Céroce a dit :

    @Pyroh a dit :
    PS: @Céroce c'est pas plutôt neuneux le pluriel de neuneu ?

    Tu m'as mis le doute, mais il semble que non.

    Fichtre ! Effectivement..
    On y apprend également que c'est sans doute [un] redoublement hypocoristique de nœud et ça c'est cool !

  • En tout cas merci pour le coup de main avec un "special thank" à Pyroh !

Connectez-vous ou Inscrivez-vous pour répondre.