我正在使用以下代码将html文件上传到我的网站,但上传时似乎缺少一些数据......
我的内容是1930行,“长度”为298872(我想这是多少个字符)
## Login using the ftplib library and set the session as the variable ftp_session
ftp_session = ftplib.FTP('ftp.website.com','admin@website.com','password')
## Open a file to upload
html_ftp_file = open('OUTPUT/output.html','rb')
## Open a folder under in the ftp server
ftp_session.cwd("/folder")
## Send/upload the the binary code of said file to the ftp server
ftp_session.storbinary('STOR output.html', html_ftp_file )
## Close the ftp_file
html_ftp_file.close()
## Quit out of the FTP session
ftp_session.quit()
为什么不上传100%的文件?它的上传率为98%......
我一直在环顾四周,找不到最大字符数限制或最大文件大小是什么,可以通过上传部分来修复(我不知道该怎么做)
*cmd* 'CWD /folder'
*resp* '250 OK. Current directory is /folder'
*cmd* 'TYPE A'
*resp* '200 TYPE is now ASCII'
*cmd* 'PASV'
*resp* '227 Entering Passive Mode (xxx,xxx,xxx,xxx,73,19)'
*cmd* 'STOR output.html'
*resp* '150 Accepted data connection'
*resp* '226-File successfully transferred'
*resp* '226 3.235 seconds (measured here), 48.23 Kbytes per second'
*cmd* 'QUIT'
*resp* '221-Goodbye. You uploaded 157 and downloaded 0 kbytes.'
*resp* '221 Logout.'
*cmd* 'CWD /folder'
*resp* '250 OK. Current directory is /folder'
*cmd* 'TYPE A'
*resp* '200 TYPE is now ASCII'
*cmd* 'PORT xxx,xxx,xxx,xxx,203,212'
*resp* '200 PORT command successful'
*cmd* 'STOR output.html'
*resp* '150 Connecting to port 52180'
*resp* '226-File successfully transferred'
*resp* '226 4.102 seconds (measured here), 38.03 Kbytes per second'
*cmd* 'QUIT'
*resp* '221-Goodbye. You uploaded 157 and downloaded 0 kbytes.'
*resp* '221 Logout.'
答案 0 :(得分:2)
从您的代码看起来您的FTP模式是二进制的,但您正在上传ASCII文件(html)。尝试将您的FTP模式更改为ASCII或首先压缩您的文件(这将是一个二进制文件),发送它然后在您的目的地解压缩。
以下是来自http://effbot.org/librarybook/ftplib.htm
的eaxmpleimport ftp
import os
def upload(ftp, file):
ext = os.path.splitext(file)[1]
if ext in (".txt", ".htm", ".html"):
ftp.storlines("STOR " + file, open(file))
else:
ftp.storbinary("STOR " + file, open(file, "rb"), 1024)
ftp = ftplib.FTP("ftp.fbi.gov")
ftp.login("mulder", "trustno1")
upload(ftp, "trixie.zip")
upload(ftp, "file.txt")
upload(ftp, "sightings.jpg")
答案 1 :(得分:1)
尝试以下操作,以二进制模式上传文件。诀窍是在调用storbinary
之前将文件传输类型设置为二进制模式(TYPE I)。
with open('OUTPUT/output.html','rb') as html_ftp_file:
# ftp_session.set_pasv(1) # If you want to use passive mode for transfer.
ftp_session.voidcmd('TYPE I') # Set file transfer type to Image (binary)
ftp_session.cwd("/folder")
ftp_session.storbinary('STOR output.html', html_ftp_file)