2017-04-22 3 views
-2

私のPythonプログラムは、FTPで画像をWebサーバーに送信しますが、到着時に転送された画像から部分データが失われることがあります。プログラムは、毎秒x秒ごとにスクリーンショットを撮ってから、イメージをWebサーバーにアップロードします。イメージが私のPython FTPプログラムを通じてデータを失うのはなぜですか?

私のウェブホスティングプロバイダは、それがPythonプログラム自体から来ているに違いないと思っていますので、私がこの問題の原因となったことを間違えていることを教えてください。

画像(ウェブサーバから引っ張ったときに、それがどのように見える):enter image description here

はコード:

def ftp(self): # Screen Grab and FTP Transfer 

    new = ImageGrab.grab(bbox=(0, 50, 1366, 720)) 
    new = new.resize((1366, 700), PIL.Image.ANTIALIAS) 
    new.save("C:\\Users\\Owner\\Desktop\\screenshots\\capture.jpg") 

    newOpen = PIL.Image.open("C:\\Users\\user\\Desktop\\screenshots\\capture.jpg") 
    newOpen.save("C:\\Users\\Owner\\Desktop\\screenshots\\capture.jpg", format="JPEG", quality=40) 

    tries = 10 # Denotes maximum try limit for retry attempts 

    for i in range(tries): 
     try: 

      # FTP image to Web Server 
      session = ftplib.FTP('server', 'user', 'pass') 
      file = open('C:\\Users\\Owner\\Desktop\\screenshots\\capture.jpg', 'rb') # file to send 
      session.storbinary('STOR capture.jpg', file) # send the file 
      file.close() # close file and FTP 
      session.quit() 

      value = "Updated. \nFailed " + str(i) + " Times\n" + str(self.tick) 

      print value 

      self.tick += 1 

     except KeyError as e: 

      if i < tries - 1: # i is zero indexed 

       continue 

      else: 

       raise 

     break 

    threading.Timer(5, self.ftp).start() 
+0

をアップロードする前と後のファイルのサイズを確認しましただったことをうれしく思いますか?彼らは一致しますか? –

+0

@MartinPrikrylあなたのご提案のおかげで、あなたにクレジットがあります。ファイルサイズを監視することで、問題を診断できました。助けてくれてありがとう。また、あなたのソフトウェアの巨大なファン – jameson1128

答えて

2

ので、このための実際の理由はFTPを開いて、私のためでした実際の転送が完了する前にWebサーバーからの私の解決策は、ウェブサーバーにPHPフィルタを追加して、転送全体が完了する前にファイルが早すぎるのを避けるために特定のサイズを超えたときにのみイメージをプルすることでした。

今は完璧に動作し、私はこの問題は、簡単なプログラム修正

+0

それは私がサイズをaboitに求めていた理由です –

+0

@MartinPrikryl Yep。私は上記のコメントへの返信でそれを認めようとしました。マーティンに感謝 – jameson1128

関連する問題