当我使用QFTP的put命令上传一个文件时,它只上传了大约40个字节的指定文件。我正在捕获dataProgress信号,并且正在获取进度,但文件的总大小仅为40字节左右。是我的代码有问题,还是FTP服务器有问题?
下面是我的上传函数:
def upload(self):
filename = QFileDialog.getOpenFileName(self, 'Upload File', '.')
fname = QIODevice(filename[0])
dataname = filename[0]
data = os.path.basename(dataname)
#data = data[data.find("/") + 1:]
print data
print fname
if not self.fileTree.currentItem():
self.qftp.put(fname, data)
elif "." in self.fileTree.currentItem().text(0):
self.qftp.put(fname, self.fileTree.currentItem().parent().text(0) + data)
elif self.fileTree.currentItem().text(0) == "/":
self.qftp.put(fname, data)
else:
return好了,我想好了我需要做什么。我需要创建一个QFile并从该文件中读取所有字节,然后将其传递给put命令。
def upload(self):
filename = QFileDialog.getOpenFileName(self, 'Upload File', '.')
data = QFile(filename[0])
data.open(1)
qdata = QByteArray(data.readAll())
file = os.path.basename(filename[0])
print data
if not self.fileTree.currentItem():
self.qftp.put(qdata, file, self.qftp.TransferType())
elif "." in self.fileTree.currentItem().text(0):
self.qftp.put(qdata, self.fileTree.currentItem().parent().text(0) + file)
elif self.fileTree.currentItem().text(0) == "/":
self.qftp.put(qdata, file)
else:
return发布于 2012-07-17 03:30:47
我猜data = os.path.basename(dataname)意味着数据总是一个包含文件名的字符串。尝试使用data = open(os.path.basename(dataname), 'rb')将其更改为打开的文件对象
编辑
看看PySide.QtNetwork.QFtp.put(data, file[, type=Binary])和PySide.QtNetwork.QFtp.put(dev, file[, type=Binary]) -参数的顺序是数据/开发,然后是文件-所以这在你的代码中是错误的……
https://stackoverflow.com/questions/11509530
复制相似问题