问题相关代码,请勿粘贴截图
ftp.connect('10.2.11', 21)
ftp.login('yy', 'yy')
bufsize = 1024
from io import BytesIO
cache_file = BytesIO()
ftp.retrbinary('RETR ' + url, cache_file.write, bufsize)
response = HttpResponse(content_type='application/octet-stream')
response.write(cache_file.getvalue())
cache_file.close()
return response
def retrbinary(self, cmd, callback, blocksize=8192, rest=None):
self.voidcmd('TYPE I')
with self.transfercmd(cmd, rest) as conn:
while 1:
data = conn.recv(blocksize)
callback(data)
if not data:
break
# shutdown ssl layer
if _SSLSocket is not None and isinstance(conn, _SSLSocket):
conn.unwrap()
return self.voidresp()
def transfercmd(self, cmd, rest=None):
return self.ntransfercmd(cmd, rest)[0]
def ntransfercmd(self, cmd, rest=None):
size = None
if self.passiveserver:
host, port = self.makepasv()
conn = socket.create_connection((host, port), self.timeout,
source_address=self.source_address)
try:
if rest is not None:
self.sendcmd("REST %s" % rest)
resp = self.sendcmd(cmd)
if resp[0] == '2':
resp = self.getresp()
if resp[0] != '1':
raise error_reply(resp)
except:
conn.close()
raise
else:
with self.makeport() as sock:
if rest is not None:
self.sendcmd("REST %s" % rest)
resp = self.sendcmd(cmd)
# See above.
if resp[0] == '2':
resp = self.getresp()
if resp[0] != '1':
raise error_reply(resp)
conn, sockaddr = sock.accept()
if self.timeout is not _GLOBAL_DEFAULT_TIMEOUT:
conn.settimeout(self.timeout)
if resp[:3] == '150':
# this is conditional in case we received a 125
size = parse150(resp)
return conn, size
运行结果及报错内容
pycharm运行无报错,部署后下载显示网络错误
我想要达到的结果
可以正常下载空txt文件