python實(shí)現(xiàn)上傳下載文件功能
最近剛學(xué)python,遇到上傳下載文件功能需求,記錄下!
django web項(xiàng)目,前端上傳控件用的是uploadify。
文件上傳 - 后臺(tái)view 的 Python代碼如下:
@csrf_exempt
@require_http_methods(["POST"])
def uploadFiles(request):
try:
user = request.session.get('user')
allFimeNames = ""
#獲取所有上傳文件
files = request.FILES.getlist("file")
for file in files:
# 獲取文件名 解析文件后綴 獲取新文件名
oldName = file.name
filename = str(int(time.time() * 10))+"."+oldName.split(".")[1]
now = datetime.now()
filePath = os.path.join("developmentTask",str(user.get("userId"))+"-"+now.strftime('%Y-%m-%d'))
dirpath = os.path.join(settings.UPLOADFILES_DIRS , filePath)
#寫(xiě)入服務(wù)器
if not os.path.exists(dirpath):
os.makedirs(dirpath)
newFilePath = os.path.join(dirpath, filename)
with open(newFilePath, 'wb+') as destination:
for chunk in file.chunks():
destination.write(chunk)
#返回新文件名 多個(gè)用逗號(hào)隔開(kāi)
allFimeNames = os.path.join(filePath,filename)
except Exception:
return JsonResponse(data={'error': "系統(tǒng)異常"}, status=400)
return JsonResponse(data={'filePath': allFimeNames})
request.FILES.getlist("file")此處的file 是前端頁(yè)面的文件提交的名稱,可以在uploadify中配置。
文件下載:
@csrf_exempt
@require_http_methods(["GET"])
def downloadFile(request):
filePath = request.GET.get("filepath")
fileName = request.GET.get("filename")
file_name = os.path.join(settings.UPLOADFILES_DIRS, filePath)
if os.path.exists(file_name):
def file_iterator(file_name, chunk_size=512):
with open(file_name) as f:
while True:
c = f.read(chunk_size)
if c:
yield c
else:
break
response = StreamingHttpResponse(file_iterator(file_name))
response['Content-Type'] = 'application/octet-stream'
response['Content-Disposition'] = 'attachment;filename="{0}"'.format(fileName)
return response
response = StreamingHttpResponse("文件不存在!")
response['Content-Type'] = 'application/octet-stream'
response['Content-Disposition'] = 'attachment;filename="{0}"'.format("")
return response
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Python select及selectors模塊概念用法詳解
- Python連接HDFS實(shí)現(xiàn)文件上傳下載及Pandas轉(zhuǎn)換文本文件到CSV操作
- 完美解決python針對(duì)hdfs上傳和下載的問(wèn)題
- Python selenium文件上傳下載功能代碼實(shí)例
- 基于python實(shí)現(xiàn)FTP文件上傳與下載操作(ftp&sftp協(xié)議)
- Python Socketserver實(shí)現(xiàn)FTP文件上傳下載代碼實(shí)例
- python3 requests庫(kù)文件上傳與下載實(shí)現(xiàn)詳解
- 使用Python操作FTP實(shí)現(xiàn)上傳和下載的方法
- python ftp 按目錄結(jié)構(gòu)上傳下載的實(shí)現(xiàn)代碼
- python實(shí)現(xiàn)的簡(jiǎn)單FTP上傳下載文件實(shí)例
- python 基于selectors庫(kù)實(shí)現(xiàn)文件上傳與下載
相關(guān)文章
python自動(dòng)化測(cè)試無(wú)法啟動(dòng)谷歌瀏覽器問(wèn)題
這篇文章主要介紹了python自動(dòng)化測(cè)試無(wú)法啟動(dòng)谷歌瀏覽器問(wèn)題,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-10-10
python實(shí)現(xiàn)查詢蘋(píng)果手機(jī)維修進(jìn)度
這篇文章主要介紹了python實(shí)現(xiàn)查詢蘋(píng)果手機(jī)維修進(jìn)度,這里用到了最重要的一個(gè)知識(shí)是python中如何設(shè)置cookie支持以及開(kāi)啟調(diào)試模式,需要的朋友可以參考下2015-03-03
Python實(shí)現(xiàn).gif圖片拆分為.png圖片的簡(jiǎn)單示例
有時(shí)候需要把GIF圖片分解成一張一張的靜態(tài)圖,jpg或者png格式,下面這篇文章主要給大家介紹了關(guān)于Python實(shí)現(xiàn).gif圖片拆分為.png圖片的相關(guān)資料,需要的朋友可以參考下2023-01-01
Python實(shí)現(xiàn)可自定義大小的截屏功能
這篇文章主要介紹了Python實(shí)現(xiàn)可自定義大小的截屏功能,結(jié)合實(shí)例形式分析了Python針對(duì)指定范圍的截圖、保存等功能相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-01-01
python實(shí)現(xiàn)自動(dòng)搶課腳本的示例代碼
本文主要介紹了python實(shí)現(xiàn)自動(dòng)搶課腳本的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12
Python數(shù)值方法及數(shù)據(jù)可視化
這篇文章主要介紹了Python數(shù)值方法及數(shù)據(jù)可視化,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-09-09
Python批量處理工作簿和工作表的實(shí)現(xiàn)示例
本文主要介紹了使用Python批量處理工作簿和工作表,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09
Python閉包執(zhí)行時(shí)值的傳遞方式實(shí)例分析
這篇文章主要介紹了Python閉包執(zhí)行時(shí)值的傳遞方式,結(jié)合實(shí)例形式分析了Python閉包執(zhí)行時(shí)的傳值原理與實(shí)現(xiàn)方式,代碼中包含了較為詳盡的注釋便于理解,需要的朋友可以參考下2018-06-06
PyCharm利用pydevd-pycharm實(shí)現(xiàn)Python遠(yuǎn)程調(diào)試的詳細(xì)過(guò)程
這篇文章主要介紹了PyCharm利用pydevd-pycharm實(shí)現(xiàn)Python遠(yuǎn)程調(diào)試,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-09-09

