I've written some python code to download an image using
urllib.urlopen().read()
and then upload it to an FTP site using
ftplib.FTP().storbinary()
but I'm having a problem. Sometimes the image file is only partially uploaded, so I get images with the bottom 20% or so cut off. I've checked the locally downloaded version and I have successfully downloaded the entire image, which leads me to believe that it is a problem with storbinary. I believe I am opening and closing all of the files correctly. Does anyone have any clues as to why I'm getting a partial upload with storbinary?
Update: When I run through the commands in the Python shell, the upload completes successfully, I don't know why it would be different from when run as a script...
It's been a while since I looked at this code, but I remember the crux of it was that I was not closing the downloaded file correctly. I have the working code though, so just in case it was a problem with the upload and not the download, here are both snippets:
Here is the working code to download the image:
Where
TheURL
is the URL of the file I'm trying to download,FilenameOnly
is just the filename portion of the path, andLocalDir
is the local destination. I believe my problem was that I was not callingLocalFile.close()
.Here is the working code to upload the image:
The problem could also have been that I was not calling
FTPServer.quit()
If anyone has any questions about this code, I'll happily reply in the comments; I feel really bad that I left any Googlers hanging!
It turns out I was not closing the downloaded file correctly. Let's all pretend this never happened.