django相关实现:用户在页面上传视频test.mp4,该文件会传入本地D:\user\中,并向mysql数据库video_load表中传入视频文件的名称与所在地址。然后用户点击“查看文件保存位置”按钮,后端程序获取数据库中对应的名称与地址,页面返回该视频文件保存的具体位置,为D:\user\test.mp4
时间: 2024-02-06 09:09:49 浏览: 114
django第一个项目连接mysql数据库实现注册登录
首先,在Django中定义一个模型类VideoLoad,用于存储视频文件的名称与地址,示例代码如下:
```python
from django.db import models
class VideoLoad(models.Model):
name = models.CharField(max_length=100)
path = models.CharField(max_length=200)
```
接着,在前端页面中,添加一个上传视频的表单和一个“查看文件保存位置”的按钮,示例代码如下:
```html
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" name="video_file">
<input type="submit" value="上传">
</form>
<button id="view_path_btn">查看文件保存位置</button>
<p id="path_display"></p>
<script>
$("#view_path_btn").click(function() {
$.get("/video_path/", function(data) {
$("#path_display").text(data);
});
});
</script>
```
在点击“查看文件保存位置”按钮时,通过jQuery发送一个GET请求到/video_path/路由,后端程序返回视频文件保存的具体位置,并在前端页面上显示。
接下来,在后端程序中,定义/video_path/路由对应的视图函数,示例代码如下:
```python
import os
from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt
from .models import VideoLoad
@csrf_exempt
def video_upload(request):
if request.method == 'POST' and request.FILES.get('video_file'):
video_file = request.FILES['video_file']
file_path = os.path.join('D:\\user\\', video_file.name)
with open(file_path, 'wb') as f:
for chunk in video_file.chunks():
f.write(chunk)
VideoLoad.objects.create(name=video_file.name, path=file_path)
return HttpResponse('上传成功!')
return HttpResponse('上传失败!')
def video_path(request):
video = VideoLoad.objects.last()
if video:
return HttpResponse(video.path)
return HttpResponse('视频不存在!')
```
在video_upload视图函数中,获取上传的视频文件,保存在本地,并将文件名和路径保存到数据库中。在video_path视图函数中,获取最后上传的视频文件,返回其保存的路径。需要注意的是,由于获取路径是敏感操作,因此在视图函数上使用@csrf_exempt装饰器,以绕过Django的CSRF防护机制。
最后,在urls.py文件中,定义/video_upload/和/video_path/路由对应的URL,示例代码如下:
```python
from django.urls import path
from . import views
urlpatterns = [
path('video_upload/', views.video_upload),
path('video_path/', views.video_path),
]
```
阅读全文