2017-04-22 62 views
-2

我的Python程序通過FTP向我的網絡服務器發送圖像,但偶爾會在到達時從傳輸的圖像中丟失部分數據。該程序每隔x秒截圖,然後將圖像上傳到Web服務器。爲什麼我的圖像通過我的Python FTP程序丟失數據?

我的虛擬主機提供商認爲它必須來自Python程序本身,所以請讓我知道我在做什麼錯誤導致此問題。

圖像(它看起來什麼從Web服務器牽拉時等):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 Credit是因爲你的建議。通過監控文件大小,我能夠診斷問題。感謝您的幫助。此外,你的軟件的巨大粉絲 – jameson1128

回答

2

所以,對於這個實際的原因是由於我打開FTP在實際傳輸完成之前來自Web服務器的圖像。我的解決方案是添加一個PHP過濾器到我的網絡服務器,只在圖像大於特定大小時才拉取圖像,以避免在整個傳輸完成之前過早查看文件。

現在的作品完美,我很高興,這個問題是一個簡單的編程修復

+0

這就是我要求aboit尺寸 –

+0

@MartinPrikryl是的原因。我試圖在回覆上面的評論時承認這一點。感謝Martin – jameson1128

相關問題