weixin_48520184 2021-12-17 10:56 采纳率: 0%
浏览 7
已结题

Python socket实现ftp下载空TXT文件显示网络错误

问题相关代码,请勿粘贴截图
        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文件

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 12月25日
    • 创建了问题 12月17日

    悬赏问题

    • ¥15 BP神经网络控制倒立摆
    • ¥20 要这个数学建模编程的代码 并且能完整允许出来结果 完整的过程和数据的结果
    • ¥15 html5+css和javascript有人可以帮吗?图片要怎么插入代码里面啊
    • ¥30 Unity接入微信SDK 无法开启摄像头
    • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
    • ¥20 cad图纸,chx-3六轴码垛机器人
    • ¥15 移动摄像头专网需要解vlan
    • ¥20 access多表提取相同字段数据并合并
    • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
    • ¥20 Java-Oj-桌布的计算