def save(self): self.mod = False if self.script == 'JSP': r = jspCore.uploadFile(self.url, self.password, self.text(), self.filenameArg) else: r = phpCore.uploadFile(self.url, self.password, self.text(), self.filenameArg, self.useRSA) if r != '1': raise Exception('可能没有权限')
def generateFileListMenu(self, data, pos): url = data[0] password = data[1] treeWidget = data[2] fileTableWidget = data[3] rdata = data[4] useRSA = data[6] script = data[7] if treeWidget.currentItem() is None: item = data[5] else: item = treeWidget.currentItem() # 当前选择文件的目录 dir = self.parsePath(item, rdata) menu = QtWidgets.QMenu() # 计算当前行数 self.mainWindow.row_num = -1 for i in fileTableWidget.selectionModel().selection().indexes(): self.mainWindow.row_num = i.row() if self.mainWindow.row_num != -1: if fileTableWidget.item(self.mainWindow.row_num, 0).text().endswith('/'): item0 = menu.addAction('上传文件') item0.setIcon( QIcon( os.path.dirname(os.path.realpath(sys.argv[0])) + '/Icons/upload_easyicon.svg')) item1 = menu.addAction('重命名') item1.setIcon( QIcon( os.path.dirname(os.path.realpath(sys.argv[0])) + '/Icons/filename_easyicon.svg')) item2 = menu.addAction('删除文件') item2.setIcon( QIcon( os.path.dirname(os.path.realpath(sys.argv[0])) + '/Icons/delete_easyicon.svg')) item3 = menu.addAction('更改权限') item3.setIcon( QIcon( os.path.dirname(os.path.realpath(sys.argv[0])) + '/Icons/management_easyicon.svg')) item4 = menu.addAction('刷新目录') item4.setIcon( QIcon( os.path.dirname(os.path.realpath(sys.argv[0])) + '/Icons/refresh_easyicon.svg')) action = menu.exec_(fileTableWidget.mapToGlobal(pos)) if action == item0: try: filePath = QtWidgets.QFileDialog.getOpenFileName( self.mainWindow, '选择文件') if filePath[0] != '': with open(filePath[0], encoding='utf-8') as f: buffer = f.read() if script == 'JSP': r = jspCore.uploadFile( url, password, buffer, dir + os.path.basename(filePath[0])) else: r = phpCore.uploadFile( url, password, buffer, dir + os.path.basename(filePath[0]), useRSA) if r == '1': QtWidgets.QMessageBox.about( self.mainWindow, "上传成功!", '文件已上传') # 更新文件目录 if script == 'JSP': files = jspCore.scanDir( url, password, dir).split('\n') else: files = phpCore.scanDir( url, password, dir, useRSA).split('\n') files = list(filter(None, files)) self.updataTable(files, fileTableWidget) else: QtWidgets.QMessageBox.about( self.mainWindow, "上传失败!", '可能没有权限') except Exception as e: QtWidgets.QMessageBox.about(self.mainWindow, "上传失败!", str(Exception(e))) elif action == item1: try: rfilename = fileTableWidget.item( self.mainWindow.row_num, 0).text() dfilename, ok = QtWidgets.QInputDialog.getText( self.mainWindow, '重命名', '更改后的文件名:', text=rfilename) if ok: if script == 'JSP': reResult = jspCore.renameFile( url, password, dir + rfilename, dir + dfilename) else: reResult = phpCore.renameFile( url, password, dir + rfilename, dir + dfilename, useRSA) if reResult == '1': QtWidgets.QMessageBox.about( self.mainWindow, "重命名成功!", '文件已重命名') else: QtWidgets.QMessageBox.about( self.mainWindow, "重命名失败!", '可能没有权限') # 更新文件目录 if script == 'JSP': files = jspCore.scanDir(url, password, dir).split('\n') else: files = phpCore.scanDir( url, password, dir, useRSA).split('\n') files = list(filter(None, files)) self.updataTable(files, fileTableWidget) except Exception as e: QtWidgets.QMessageBox.about(self.mainWindow, "重命名失败!", str(Exception(e))) elif action == item2: try: file = fileTableWidget.item(self.mainWindow.row_num, 0).text() reply = QtWidgets.QMessageBox.question( self.mainWindow, '删除文件', "确定要删除该文件吗?", QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No, QtWidgets.QMessageBox.Yes) if reply == QtWidgets.QMessageBox.Yes: if script == 'JSP': deResult = jspCore.deleteFile( url, password, dir + file) else: deResult = phpCore.deleteFile( url, password, dir + file, useRSA) if deResult == '1': QtWidgets.QMessageBox.about( self.mainWindow, "删除成功!", '文件已删除') else: QtWidgets.QMessageBox.about( self.mainWindow, "删除失败!", '可能没有权限') # 更新文件目录 if script == 'JSP': files = jspCore.scanDir(url, password, dir).split('\n') else: files = phpCore.scanDir( url, password, dir, useRSA).split('\n') files = list(filter(None, files)) self.updataTable(files, fileTableWidget) except Exception as e: QtWidgets.QMessageBox.about(self.mainWindow, "删除文件失败!", str(Exception(e))) elif action == item3: try: file = fileTableWidget.item(self.mainWindow.row_num, 0).text() rmode = fileTableWidget.item(self.mainWindow.row_num, 3).text() nmode, ok = QtWidgets.QInputDialog.getText( self.mainWindow, '更改权限', '更改为:', text=rmode) if ok: searchObj = re.search('^0[0-7][0-7][0-7]$', nmode) if searchObj is None: raise Exception('输入不合法') if script == 'JSP': chmodResult = jspCore.chmodFile( url, password, dir + file, nmode) else: chmodResult = phpCore.chmodFile( url, password, dir + file, nmode, useRSA) if chmodResult == '1': QtWidgets.QMessageBox.about( self.mainWindow, "更改成功!", '权限已经更改') else: QtWidgets.QMessageBox.about( self.mainWindow, "更改失败!", '更改权限失败!') # 更新文件目录 if script == 'JSP': files = jspCore.scanDir(url, password, dir).split('\n') else: files = phpCore.scanDir( url, password, dir, useRSA).split('\n') self.mainWindow.updataTable(files, fileTableWidget) except Exception as e: QtWidgets.QMessageBox.about(self.mainWindow, "更改权限失败!", str(Exception(e))) elif action == item4: # 更新文件目录 if script == 'JSP': files = jspCore.scanDir(url, password, dir).split('\n') else: files = phpCore.scanDir(url, password, dir, useRSA).split('\n') files = list(filter(None, files)) self.updataTable(files, fileTableWidget) else: # 文件 item0 = menu.addAction('上传文件') item0.setIcon( QIcon( os.path.dirname(os.path.realpath(sys.argv[0])) + '/Icons/upload_easyicon.svg')) item1 = menu.addAction('下载文件') item1.setIcon( QIcon( os.path.dirname(os.path.realpath(sys.argv[0])) + '/Icons/download_easyicon.svg')) item2 = menu.addAction('重命名') item2.setIcon( QIcon( os.path.dirname(os.path.realpath(sys.argv[0])) + '/Icons/filename_easyicon.svg')) item3 = menu.addAction('删除文件') item3.setIcon( QIcon( os.path.dirname(os.path.realpath(sys.argv[0])) + '/Icons/delete_easyicon.svg')) item4 = menu.addAction('更改权限') item4.setIcon( QIcon( os.path.dirname(os.path.realpath(sys.argv[0])) + '/Icons/management_easyicon.svg')) item5 = menu.addAction('刷新目录') item5.setIcon( QIcon( os.path.dirname(os.path.realpath(sys.argv[0])) + '/Icons/refresh_easyicon.svg')) action = menu.exec_(fileTableWidget.mapToGlobal(pos)) if action == item0: try: filePath = QtWidgets.QFileDialog.getOpenFileName( self.mainWindow, '选择文件') if filePath[0] != '': with open(filePath[0], encoding='utf-8') as f: buffer = f.read() if script == 'JSP': upResult = jspCore.uploadFile( url, password, buffer, dir + os.path.basename(filePath[0])) else: upResult = phpCore.uploadFile( url, password, buffer, dir + os.path.basename(filePath[0]), useRSA) if upResult == '1': QtWidgets.QMessageBox.about( self.mainWindow, "上传成功!", '文件已上传') # 更新文件目录 if script == 'JSP': files = jspCore.scanDir( url, password, dir).split('\n') else: files = phpCore.scanDir( url, password, dir, useRSA).split('\n') files = list(filter(None, files)) self.updataTable(files, fileTableWidget) else: QtWidgets.QMessageBox.about( self.mainWindow, "上传失败!", '可能没有权限') except Exception as e: QtWidgets.QMessageBox.about(self.mainWindow, "上传失败!", str(Exception(e))) elif action == item1: try: # TODO 后台下载 filename = fileTableWidget.item( self.mainWindow.row_num, 0).text() file = QtWidgets.QFileDialog.getSaveFileName( self.mainWindow, '保存路径', filename) if file[0] != '': if script == 'JSP': buffer = jspCore.downloadFile( url, password, dir + filename) else: buffer = phpCore.downloadFile( url, password, dir + filename, useRSA) with open(file[0], 'w', encoding='utf-8') as f: f.write(buffer) QtWidgets.QMessageBox.about( self.mainWindow, "下载成功!", '文件已保存') except Exception as e: QtWidgets.QMessageBox.about(self.mainWindow, "下载失败!", str(Exception(e))) elif action == item2: try: rfilename = fileTableWidget.item( self.mainWindow.row_num, 0).text() dfilename, ok = QtWidgets.QInputDialog.getText( self.mainWindow, '重命名', '更改后的文件名:', text=rfilename) if ok: if script == 'JSP': reResult = jspCore.renameFile( url, password, dir + rfilename, dir + dfilename) else: reResult = phpCore.renameFile( url, password, dir + rfilename, dir + dfilename, useRSA) if reResult == '1': QtWidgets.QMessageBox.about( self.mainWindow, "重命名成功!", '文件已重命名') else: QtWidgets.QMessageBox.about( self.mainWindow, "重命名失败!", '可能没有权限') # 更新文件目录 if script == 'JSP': files = jspCore.scanDir(url, password, dir).split('\n') else: files = phpCore.scanDir( url, password, dir, useRSA).split('\n') files = list(filter(None, files)) self.updataTable(files, fileTableWidget) except Exception as e: QtWidgets.QMessageBox.about(self.mainWindow, "重命名失败!", str(Exception(e))) elif action == item3: try: file = fileTableWidget.item(self.mainWindow.row_num, 0).text() reply = QtWidgets.QMessageBox.question( self.mainWindow, '删除文件', "确定要删除该文件吗?", QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No, QtWidgets.QMessageBox.Yes) if reply == QtWidgets.QMessageBox.Yes: if script == 'JSP': deResult = jspCore.deleteFile( url, password, dir + file) else: deResult = phpCore.deleteFile( url, password, dir + file, useRSA) if deResult == '1': QtWidgets.QMessageBox.about( self.mainWindow, "删除成功!", '文件已删除') else: QtWidgets.QMessageBox.about( self.mainWindow, "删除失败!", '可能没有权限') # 更新文件目录 if script == 'JSP': files = jspCore.scanDir(url, password, dir).split('\n') else: files = phpCore.scanDir( url, password, dir, useRSA).split('\n') files = list(filter(None, files)) self.updataTable(files, fileTableWidget) except Exception as e: QtWidgets.QMessageBox.about(self.mainWindow, "删除文件失败!", str(Exception(e))) elif action == item4: try: file = fileTableWidget.item(self.mainWindow.row_num, 0).text() rmode = fileTableWidget.item(self.mainWindow.row_num, 3).text() nmode, ok = QtWidgets.QInputDialog.getText( self.mainWindow, '更改权限', '更改为:', text=rmode) if ok: searchObj = re.search('^0[0-7][0-7][0-7]$', nmode) if searchObj is None: raise Exception('输入不合法') if script == 'JSP': chmodResult = jspCore.chmodFile( url, password, dir + file, nmode) else: chmodResult = phpCore.chmodFile( url, password, dir + file, nmode, useRSA) if chmodResult == '1': QtWidgets.QMessageBox.about( self.mainWindow, "更改成功!", '权限已经更改') else: QtWidgets.QMessageBox.about( self.mainWindow, "更改失败!", '更改权限失败!') # 更新文件目录 if script == 'JSP': files = jspCore.scanDir(url, password, dir).split('\n') else: files = phpCore.scanDir( url, password, dir, useRSA).split('\n') files = list(filter(None, files)) self.updataTable(files, fileTableWidget) except Exception as e: QtWidgets.QMessageBox.about(self.mainWindow, "更改权限失败!", str(Exception(e))) elif action == item5: # 更新文件目录 if script == 'JSP': files = jspCore.scanDir(url, password, dir).split('\n') else: files = phpCore.scanDir(url, password, dir, useRSA).split('\n') files = list(filter(None, files)) self.updataTable(files, fileTableWidget) else: item1 = menu.addAction('上传文件') item1.setIcon( QIcon( os.path.dirname(os.path.realpath(sys.argv[0])) + '/Icons/upload_easyicon.svg')) item2 = menu.addAction('刷新目录') item2.setIcon( QIcon( os.path.dirname(os.path.realpath(sys.argv[0])) + '/Icons/refresh_easyicon.svg')) action = menu.exec_(fileTableWidget.mapToGlobal(pos)) if action == item1: try: filePath = QtWidgets.QFileDialog.getOpenFileName( self.mainWindow, '选择文件') if filePath[0] != '': with open(filePath[0], encoding='utf-8') as f: buffer = f.read() if script == 'JSP': r = jspCore.uploadFile( url, password, buffer, dir + os.path.basename(filePath[0])) else: r = phpCore.uploadFile( url, password, buffer, dir + os.path.basename(filePath[0]), useRSA) if r == '1': QtWidgets.QMessageBox.about( self.mainWindow, "上传成功!", '文件已上传') # 更新文件目录 if script == 'JSP': files = jspCore.scanDir(url, password, dir).split('\n') else: files = phpCore.scanDir( url, password, dir, useRSA).split('\n') files = list(filter(None, files)) self.updataTable(files, fileTableWidget) else: QtWidgets.QMessageBox.about( self.mainWindow, "上传失败!", '可能没有权限') except Exception as e: QtWidgets.QMessageBox.about(self.mainWindow, "上传失败!", str(Exception(e))) elif action == item2: # 更新文件目录 if script == 'JSP': files = jspCore.scanDir(url, password, dir).split('\n') else: files = phpCore.scanDir(url, password, dir, useRSA).split('\n') files = list(filter(None, files)) self.updataTable(files, fileTableWidget)