Django项目文件上传
2020-03-05 18:04
656 查看
前后端不分离模式下的文件上传
1.在setting.py文件中templetes模块配置以下内容
#使用媒体文件 上传的文件 'django.template.context_processors.media'
2.引用seting.py文件中的MEDIA_URL
MEDIA_URL = '/static/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'static/media')
<li><span>用户头像:</span><img src="{{ MEDIA_URL }}{{ user.icon }}"</li>
3.本地上传
有form: <form action='' method='post' enctype="multipart/form-data"> <input type="hidden" name="uid" value= {{ user.id }}> {% csrf_token %} <li><span>用户头像:</span><img src="{{ MEDIA_URL }}{{ user.icon }}" alt="" id="user_icon"> <input type='submit' value='修改头像' onclick='javascript:$("#hiddenFile").click();'/> <input id='hiddenFile' type='file' style="display:none" onchange='change_icon();'/> </li> </form> 无form: <li><span>用户头像:</span><img src="{{ MEDIA_URL }}{{ user.icon }}" alt="" id="user_icon"> <input type='button' value='修改头像' onclick='javascript:$("#hiddenFile").click();'/> {% csrf_token %} <input id='hiddenFile' type='file' style="display:none" onchange='change_icon();'/> </li>
利用Ajax上传头像 {% block myjs %} <script> function change_icon() { {#// 构建form表单 采用无form表单时使用#} {#var form = new FormData();#} {#form.append('uid', {{ user.id }});#} {#form.append('icon', $("#hiddenFile")[0].files[0]);#} {#csrf = $('input[name="csrfmiddlewaretoken"]').val();#} {#form.append('csrfmiddlewaretoken', csrf);#} $.ajax({ url: '{% url 'user:modify_icon' %}', type: 'POST', dataType: 'json', data: form, contentType: false, //---》 是否添加Content-Type请求头 processData: false, //-- -》 enctype的值不进行编码 multipart / form - data success: function (data) { console.log(data); if (data.msg == 'ok') { $('#user_icon').attr('src', '{{ MEDIA_URL }}' + data.image); } } , error: function (data) { console.log(data); } }) ; } </script> {% endblock %}
后端接收 #此场景为上传头像,图片保存在用户模型icon字段中 # 修改图片 def modify_icon(request): if request.method == 'POST': # icon = request.POST.get('') uid = request.POST.get('uid') icon = request.FILES.get('icon') # - ----> 所有文件上传的内容都必须通过request.FILEs user = User.objects.get(pk=uid) user.icon = icon # - ---> models icon = models.ImageFiled() user.save() return JsonResponse({'msg': 'ok', 'image': str(user.icon)})
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- django项目中上传文件
- Extjs项目使用技巧————文件上传
- asp.net大文件分块上传与进度显示,完整项目源码
- (Mac)Rails项目使用七牛上传及下载文件
- 【SSH网上商城项目实战13】Struts2实现文件上传功能
- 项目____上传文件
- Xcode svn import项目 上传.a文件(静态库)
- Django项目关闭debug模式后,静态文件无法加载的解决办法
- Springboot项目关于上传文件的大小限制
- 17.12.25,web学习第三十二天,还有一年,努力吧青年 商城项目第五天 我的订单回显和文件上传
- django项目部署在Apache服务器中,静态文件路径的注意点
- Django处理文件上传File Uploads
- 如何将本地项目文件上传至github
- 项目--ajax上传文件(本次是图片)(.net)
- django上传文件
- SSH路况学习项目(文件上传添加+文件修改+文件删除+分页):将数据添加进list界面
- 17.12.26,web学习第三十三天,还有一年,努力吧青年 商城项目第六天 ajax,文件上传
- Django 上传文件(bootstrap file input插件) 中文乱码 解决 (python3)
- Django实现文件上传下载
- Silverlight多文件(大文件)上传的开源项目