用Django实现文件的上传下载,前后端不分离
![在这里插入图片描述](https://img-blog.csdnimg.cn/844f8e8e6d1e481ba4d4b19dc074b076.gif#pic_center)
首先需要在setting中加入下面两行代码,将media加入到BASE_DIR中
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
在你项目的urls中加入下面一行
url(r'^media/(?P<path>.*)$', serve, {'document_root': MEDIA_ROOT}, name='media'),
from django.conf.urls import url
from django.contrib import admin
from django.urls import path, include
from django.views.static import serve
from mytest01.settings import MEDIA_ROOT
urlpatterns = [
path('admin/', admin.site.urls),
path('api/',include("myapp01.urls")),
url(r'^media/(?P<path>.*)$', serve, {'document_root': MEDIA_ROOT}, name='media'),
]
app下的urls
from django.urls import path
from myapp01 import views
urlpatterns = [
path('upload/',views.UploadFile)
]
views代码
def UploadFile(request):
data = {}
if request.method == "POST":
upload_file = request.FILES.get("uploadfile")
file_name = os.path.splitext(upload_file.name)
print(file_name)
print(upload_file.name)
print(upload_file.size)
fs = FileSystemStorage()
filename = fs.save(upload_file.name, upload_file)
data = {
"file_data": "http://127.0.0.1:8001" + str(fs.url(filename))}
return render(request, 'upload.html', context=data)
templates upload.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h2>Upload</h2>
<form method="post" enctype = "multipart/form-data">
<input type="file" name="uploadfile">
<button type="submit">upload file</button>
</form>
<h1><a href="{{ file_data }}">download</a></h1>
</body>
</html>
文件上传前端写的很low,哈哈,大家凑合看
点击预览
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210104155714434.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjI1NzkyNA==,size_16,color_FFFFFF,t_70#pic_center)
选择文件,点击打开
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210104155725804.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjI1NzkyNA==,size_16,color_FFFFFF,t_70#pic_center)
点击upload file 按钮即可实现文件上传功能
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210104155738185.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjI1NzkyNA==,size_16,color_FFFFFF,t_70#pic_center)
上传的文件在media下,因为之前上传了一个文件,再次上传相同的文件,系统会自动给文件加上7位后缀,防止重名
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210104155807471.png#pic_center)
文件下载,点击download,确定即可实现文件下载功能
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210104155748442.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjI1NzkyNA==,size_16,color_FFFFFF,t_70#pic_center)