国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

python - "AttributeError: ’dict’ object has no attribute ’filename’"

瀏覽:88日期:2022-08-24 08:00:06

問題描述

python2.7版本,使用Pycharm運行python項目的gui.py文件時提示app.py的第17行代碼(也就是filename = i.file.filename)出錯,錯誤信息:AttributeError: ’dict’ object has no attribute ’filename’但是代碼已經對file進行了初始化了:

i = web.input(file = {}) #接收數據filename = i.file.filename #獲取文件名file = i.file.file.read() #獲取文件

請問為啥還是出現這個錯誤?

html代碼為:

<!DOCTYPE html><html><body><form action='/upload' method='post' enctype='multipart/form-data'> <input type='file' name='file'> <input type='submit' value='post'></form></body></html>

gui.py代碼為:

# -*- coding:utf-8 -*-from Tkinter import *import tkFileDialogimport urllib2import sysimport win32clipboard as wimport win32conimport win32apiimport tkMessageBox# reload(sys)# sys.setdefaultencoding('utf-8')def setText(text): w.OpenClipboard() w.EmptyClipboard() w.SetClipboardData(win32con.CF_TEXT,text) w.CloseClipboard()def upload(): filename = tkFileDialog.askopenfilename(title='選擇文件')#選擇文件,返回文件名 files = open(filename,’rb’).read() data =’’’------WebKitFormBoundaryDLanRACtPqUEBKKsContent-Disposition: form-data; name='file'; filename='%s'Content-Type: application/octet-stream[file]------WebKitFormBoundaryDLanRACtPqUEBKKs--’’’%filename.split(’/’)[-1] data = bytes(data) data = data.replace(bytes(’[file]’),files) req = urllib2.Request(’http://127.0.0.1:8080/upload’,data) req.add_header(’Content-Type’,’multipart/form-data; boundary=----WebKitFormBoundaryPZsy5bHyBCEivf53’) html = urllib2.urlopen(req).read() print html ent.delete(0,END) ent.insert(0,html)def download(): files = urllib2.urlopen(ent.get()).read() filename = tkFileDialog.asksaveasfilename() with open(filename,’wb’) as fn:fn.write(files)def copy(): setText(ent.get()) tkMessageBox.showinfo(’ok’,’url已復制’)root = Tk()#創建窗口root.title('文件分享系統')#修改窗口名root.geometry('300x130+500+300')#修改窗口大小和位置ent = Entry(root,width = 50)#輸入框ent.grid()#顯示控件btn_upload = Button(root,text=' Upload ',command=upload)btn_upload.grid()btn_download = Button(root,text='Download',command=download)btn_download.grid()btn_copy = Button(root,text=' Copy url ',command=copy)btn_copy.grid()mainloop()#顯示窗口

app.py代碼為:

# -*- coding:utf-8 -*-import weburls = ( #’/my’,’My’,#瀏覽器訪問http://127.0.0.1:8080/my時,就會調用My這個類的GET方法 ’/’,’Index’, ’/upload’,’Upload’,)#路由render = web.template.render(’templates’)class Index: def GET(self):return render.index()class Upload: def POST(self):i = web.input(file = {}) #接收數據filename = i.file.filename #獲取文件名file = i.file.file.read() #獲取文件with open(’static/%s’ %filename,’wb’) as fn: fn.write(file)return ’http://127.0.0.1:8080/static/%s’ %filenameapp = web.application(urls,globals())if __name__== ’__main__’:#入口函數判斷,本文件調用時,__name__== ’__main__’,其他文件調用時,__name__==文件名 app.run()

python - "AttributeError: ’dict’ object has no attribute ’filename’"

問題解答

回答1:

上傳文件沒有成功。

問題出在上傳的地方,這個Boudary后面的值不是固定的,urllib2沒有處理MIME的功能,要配合其它庫比如poster使用。

推薦你使用requests,Python里最好的http庫。

import requestsdata = {’file’: open(’a.out’,’rb’)} # 這里a.out是你要上傳的文件名requests.post(’http://127.0.0.1:8080/upload’,files=data)

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 国产一级毛片在线 | 日韩精品视频美在线精品视频 | 国产精品合集久久久久青苹果 | aaa级大片 | 亚洲国产视频在线 | 国产一区二区免费在线 | 免费视频成人国产精品网站 | 免费人成观看在线网 | 手机看片自拍日韩日韩高清 | 精品视频一区二区三区在线观看 | 亚洲欧美日韩精品久久亚洲区色播 | 国产欧美日韩综合二区三区 | 久草中文在线观看 | 亚洲三级精品 | 成人公开免费视频 | 国产成人综合95精品视频免费 | 白嫩美女直冒白浆 | 男女在线免费视频 | 欧美性久久久久 | 兔费看全黄三级 | 亚洲欧洲一二三区机械有限公司 | 亚洲专区欧美专区 | 精品一久久香蕉国产线看观 | 天天摸天天爽视频69视频 | 三级中文字幕 | 美女张开腿让男人桶下面 | 国产日本三级 | 久久久久久国产精品免费免费 | 成人日韩在线观看 | 亚洲香蕉一区二区三区在线观看 | 亚洲精品综合欧美一区二区三区 | 欧美黑粗特黄午夜大片 | 欧美日韩精品一区二区三区视频 | 无遮挡一级毛片私人影院 | 亚洲精品国产三级在线观看 | 精品一区二区三区视频在线观看免 | 久久99国产精一区二区三区! | 99爱视频免费高清在线观看 | 久久视频精品线视频在线网站 | 在线免费观看一级片 | 天天摸天天爽视频69视频 |