Python在上传大小超过8192字节的文件时失败。例外情况只有"超过8192字节"。是否有上传更大文件的解决方案。
try:
ftp = ftplib.FTP(str_ftp_server )
ftp.login(str_ftp_user, str_ftp_pass)
except Exception as e:
print('Connecting ftp server failed')
return False
try:
print('Uploading file ' + str_param_filename)
file_for_ftp_upload = open(str_param_filename, 'r')
ftp.storlines('STOR ' + str_param_filename, file_for_ftp_upload)
ftp.close()
file_for_ftp_upload.close()
print('File upload is successful.')
except Exception as e:
print('File upload failed !!!exception is here!!!')
print(e.args)
return False
return True
答案 0 :(得分:7)
storlines
一次读取一行文本文件,8192是每行的最大大小。作为上传功能的核心,您可能最好使用它:
with open(str_param_filename, 'rb') as ftpup:
ftp.storbinary('STOR ' + str_param_filename, ftpup)
ftp.close()
它以二进制形式读取和存储,一次一个块(默认值为8192),但对于任何大小的文件都应该可以正常工作。
答案 1 :(得分:1)
我有类似的问题并通过增加ftplib的maxline变量的值来解决它。您可以将其设置为您希望的任何整数值。它表示文件中每行的最大字符数。这会影响上传和下载。
我建议在Alex Martelli的回答大多数情况下使用ftp.storbinary
,但在我的情况下这不是一个选项(不是常态)。
ftplib.FTP.maxline = 16384 # This is double the default value
在开始文件传输之前,只需在任何时候调用该行。