FTP库错误:获得超过8192个字节

时间:2015-01-19 00:33:18

标签: python file-upload ftp

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

2 个答案:

答案 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

在开始文件传输之前,只需在任何时候调用该行。