54 lines
1.8 KiB
Python
54 lines
1.8 KiB
Python
# -*- coding: utf-8 -*-
|
||
import os
|
||
import posixpath
|
||
from odoo.modules import get_resource_path
|
||
from ftplib import FTP
|
||
import logging
|
||
|
||
|
||
# FTP接口类
|
||
class FtpController():
|
||
'''
|
||
这是ftp接口类,在类初始化的时候就连接了ftp服务器,能否成功连接有反馈。
|
||
类中定义了两个接口:上传接口和删除接口
|
||
'''
|
||
|
||
ftp = FTP()
|
||
|
||
def __init__(self, host="192.168.50.202", port=21, username="ftpuser", password="123456"):
|
||
try:
|
||
self.ftp.connect(host, port)
|
||
self.ftp.login(username, password)
|
||
logging.info("连接: %s" % 111111)
|
||
except:
|
||
logging.info("连接失败: ")
|
||
|
||
# 下载目录下的文件
|
||
def download_file_tree(self, remotepath, serverdir):
|
||
if not os.path.exists(serverdir):
|
||
os.makedirs(serverdir)
|
||
logging.info("remotepath: %s" % remotepath)
|
||
self.ftp.cwd(remotepath)
|
||
logging.info("serverdir: %s" % serverdir)
|
||
remotenames = self.ftp.nlst()
|
||
logging.info("remotenames: %s" % remotenames)
|
||
for file in remotenames:
|
||
server = os.path.join(serverdir, file)
|
||
if file.find(".") == -1:
|
||
if not os.path.exists(serverdir):
|
||
os.makedirs(serverdir)
|
||
self.download_file_tree(server, file)
|
||
else:
|
||
logging.info("server: %s" % server)
|
||
self.download_file(server, file)
|
||
self.ftp.cwd("..")
|
||
return True
|
||
|
||
|
||
def download_file(self, serverfile, remotefile): # 下载指定目录下的指定文件
|
||
file_handler = open(serverfile, 'wb')
|
||
logging.info("file_handler: %s" % file_handler)
|
||
self.ftp.retrbinary('RETR ' + remotefile, file_handler.write)
|
||
file_handler.close()
|
||
return True
|