def retr_file(self, service, filename, callback, mode = SMB_O_OPEN, offset = 0, password = None, timeout = None):
filename = string.replace(filename, '/', '\\')
fid = -1
tid = self.__connect_tree('\\\\' + self.__remote_name + '\\' + service, SERVICE_ANY, password, timeout)
try:
fid, attrib, lastwritetime, datasize, grantedaccess, filetype, devicestate, action, serverfid = self.__open_file(tid, filename, mode, SMB_ACCESS_READ | SMB_SHARE_DENY_WRITE)
#if not datasize:
datasize = self.__query_file_info(tid, fid)
if self.__can_read_raw:
self.__raw_retr_file(tid, fid, offset, datasize, callback)
else:
self.__nonraw_retr_file(tid, fid, offset, datasize, callback, timeout)
finally:
if fid >= 0:
self.__close_file(tid, fid)
self.__disconnect_tree(tid)
评论列表
文章目录