コード例 #1
0
    def dataReceived(self, data):
        # Envoi d'un fichier - init
        if data == "recevoir":
            self.GenerationFichierAEnvoyer()
            return

        # Envoi du fichier si client pret a recevoir
        if data == "pret_pour_reception":
            self.Envoyer()
            return

        # Fin de l'envoi
        if data == "fin_envoi":
            self.FinEnvoi()
            return

        # Si JSON : Réception d'un fichier
        if self.IdentificationJSON(data):
            message = json.loads(data)

            # Reception d'un fichier - init
            if message["action"] == "envoyer":
                nom_appareil = message["nom_appareil"]
                tailleFichier = message["taille"]
                nomInitial = message["nom"]
                nomFinal = UTILS_Fichiers.GetRepSync(nomInitial)
                self.EcritLog(
                    _(u"Prêt à recevoir de l'appareil ") + nom_appareil +
                    " le fichier " + nomInitial + " (" +
                    FonctionsPerso.Formate_taille_octets(tailleFichier) + ")")
                fichier = open(nomFinal, "wb")
                self.dictFichierReception = {
                    "nom_initial": nomInitial,
                    "nom_final": nomFinal,
                    "taille_totale": tailleFichier,
                    "taille_actuelle": 0,
                    "fichier": fichier,
                }
                self.transport.write("pret_pour_reception")
                self.EcritLog(_(u"Réception en cours"))
                self.log.SetImage("download")
                return

        # Réception des données d'un fichier
        if self.dictFichierReception != None:
            self.dictFichierReception["fichier"].write(data)

            # Calcule de la taille de la partie telechargee
            self.dictFichierReception["taille_actuelle"] += len(data)
            pourcentage = int(100.0 *
                              self.dictFichierReception["taille_actuelle"] /
                              self.dictFichierReception["taille_totale"])
            #self.EcritLog(_(u"Réception en cours...  ") + str(pourcentage) + u" %")
            self.log.SetGauge(pourcentage)
            return

        # Si aucune data valide, on déconnecte
        self.EcritLog(_(u"Aucune donnée valide reçue"))
        self.transport.loseConnection()
コード例 #2
0
 def EnvoyerInfosSurFichierAEnvoyer(self, nomFichier=""):
     self.nomFichierAEnvoyer = nomFichier
     self.log.SetImage("upload")
     tailleFichier = os.path.getsize(nomFichier)
     self.transport.write(
         json.dumps({
             "action": "envoyer",
             "nom": os.path.basename(nomFichier),
             "taille": tailleFichier
         }))
     self.EcritLog(
         _(u"Envoi du fichier (%s)") %
         FonctionsPerso.Formate_taille_octets(tailleFichier))
     self.log.SetImage("on")
コード例 #3
0
 def FormateTailleFichier(taille):
     return FonctionsPerso.Formate_taille_octets(taille)