Python 之文件上传
基于form表单提交
# 需要指定form-data,不能直接拼键值对

可以指定name照片存在位置

views.py
from django.shortcuts import render,redirect,HttpResponse
# Create your views here. import os
def index(request):
if request.method=="POST":
print(request.POST) # post里面只放键值对
# < QueryDict: {'csrfmiddlewaretoken':
# ['hS5bYNIkbNqazL7svWKxwrJXXY5sftIR1mxrMUMqox9diZS4bwz7Nn183Um8H0U8'], 'user': ['6666'], 'f': ['vzh.jpg']} >
print(request.FILES)
# <MultiValueDict: {'f': [<InMemoryUploadedFile: vzh.jpg (image/jpeg)>]}>
obj = request.FILES.get("f") # 取出上传文件的对象
name = obj.name # 具体文件的名字
f_write = open(os.path.join("app01","static","img",name),"wb") # 如果想要将文件存在某个具体的位置,将路径拼接出来,再加上name
# 如果只放name ,那么文件会存在当前的根目录下
for line in obj: # 取出每一行的数据
f_write.write(line) return HttpResponse("")
return render(request,"index.html") def put(request):
return HttpResponse("ok")
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Title</title>
</head>
<body> <h3>基于form表单上传文件</h3>
{# form-data类型可以上传文件#}
<form action="" method="post" ENCTYPE="multipart/form-data">
{% csrf_token %}
<p><input type="text" name="user"></p>
<p><input type="file" name="f"></p> <input type="submit">
</form>
</body>
</html>
index.html
注意点:
form表单
<form action="" method="post" ENCTYPE="multipart/form-data">
需要加ENCTYPE="multipart/form-data"
form-data是可以用来上传文件
ajax请求文件上传
{# ajax 也有属于自己的form—data 需要自己配置且指定 contentType:false,processData:false 不加会报错#}
{# formdata实例化对象,然后往里面放值 #}
<h3>基于ajax的文件上传</h3>
{# ajax 也有属于自己的form—data 需要自己配置且指定 contentType:false,processData:false 不加会报错#}
{# formdata实例化对象,然后往里面放值 #}
{% csrf_token %}
<p><input type="text" id="pwd"></p>
<p><input type="file" id="file"></p>
<button class="ajax_btn">提交</button>
<script>
$(".ajax_btn").click (function() {
var formdata=new FormData();
formdata.append("pwd",$("#pwd").val());
formdata.append("csrfmiddlewaretoken",$("[name='csrfmiddlewaretoken']").val());
formdata.append("f",$("#file")[0].files[0]);
$.ajax({
url:"/put_ajax/",
type:"post",
data:formdata,
contentType:false,
processData:false,
success:function (data) {
console.log(data);
}
})
})
</script>
Python 之文件上传的更多相关文章
- Python Selenium 文件上传之Autoit
今天补充一种文件上传的方法 主要是因为工作中使用SendKeys方法不稳定,具体方法见: Python Selenium 文件上传之SendKeys 这种方法直接通过命令行执行脚本时没有问题,可以成功 ...
- Python Selenium 文件上传之SendKeys
昨天写了Web 文件下载的ui自动化,下载之后,今天就要写web 文件上传的功能了. 当然从折腾了俩小时才上传成功.下面写一下自己操作的步骤 首先网上说的有很多方法 如 input 标签的最好做了,直 ...
- Python WebDriver 文件上传(二)
今天补充一种文件上传的方法 主要是因为工作中使用SendKeys方法不稳定,具体方法见: Python WebDriver 文件上传(一) 这种方法直接通过命令行执行脚本时没有问题,可以成功上传,但是 ...
- Python WebDriver 文件上传(一)
昨天写了Web 文件下载的ui自动化,下载之后,今天就要写web 文件上传的功能了. 当然从折腾了俩小时才上传成功.下面写一下自己操作的步骤 首先网上说的有很多方法 如 input 标签的最好做了,直 ...
- Selenium2+python自动化-文件上传
前言 文件上传是web页面上很常见的一个功能,自动化成功中操作起来却不是那么简单. 一般分两个场景:一种是input标签,这种可以用selenium提供的send_keys()方法轻松解决:另外一种非 ...
- selenium+Python(文件上传)
文件上传操作也比较常见功能之一,上传功能没有用到新有方法或函数,上传过程一般要打开一个本地窗口,从窗口选择本地文件添加.所以,一般会卡在如何操作本地窗口添加上传文件只要定位上传按钮,通send_key ...
- Python Django文件上传
文件保存本地 view视图 def update(request): if request.method =='GET': return render(request,'update.html') e ...
- python day32--struct,文件上传下载
一.struct模块 可以把要发送的数据长度转换成固定长度的字节 struct.pack('i',数据长度) struct.unpack('i',数据长度) 二.上传下载文件作业 server imp ...
- python服务器文件上传下载+GUI【tkinter】
大概就是一个通过应用程序来和服务器打交道的这么一个,小东西 1.GUI 用的是tkinter # -*- coding: UTF-8 -*- from tkinter import * import ...
随机推荐
- iOS开发进阶 - 基于PhotoKit的图片选择器
移动端访问不佳,请访问我的个人博客 很早之前就用OC把代码写完了并用在项目中了,一直没时间整理,现在用swift重写一份,并且更加详细的来了解这个Photos框架,下面是我集合苹果官方文档和其他大神的 ...
- Graph_Master(连通分量_D_Trajan缩点+dfs)
hdu_2242 题目大意:求将一张无向图(n个点,m条边)移除一条边分为不连通两部分,使得两部分的点权和最接近,若无法分为两部分,则输出impossible. 题解:拿到题面还算清晰,就是先tarj ...
- Vjudge - F - 比前面更简单的模拟
2017-07-16 07:31:35 writer:pprp 题目介绍:很基础的string用法 题目如下: 读入一个字符串,字符串中包含ZOJ三个字符,个数不一定相等,按ZOJ的顺序输出,当某个字 ...
- jQuery编程规范与最佳实践(附带一些个人的笔记)
加载jQuery-Loading jQuery 1.坚持使用CDN来加载jQuery,这种别人服务器免费帮你托管文件的便宜干嘛不占呢.点击查看使用CDN的好处,点此查看一些主流的jQuery CDN地 ...
- 获取用户真实IP,php实现
function get_client_ip() { if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv(" ...
- 字体渲染技术(字体抗锯齿技术) -webkit-font-smoothing: antialiased;
1.-webkit-font-smoothing控制的字体渲染只对MacOS的webkit有效.所以,你在MacOS测试环境下面设置-webkit-font-smoothing时,只要你不把它设置为n ...
- Linux命令详解-mv
mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录. 1.命令格式: mv [选项] 源文件或目 ...
- spoj-SAMER08A-最短路
SAMER08A - Almost Shortest Path #graph-theory #shortest-path #dijkstra-s-algorithm Finding the short ...
- hdu4678 Mine 规律或者博弈。(博弈的sg函数不懂我是找的规律)
链接:题意就是告诉你一个扫雷图里面每个雷的位置,有两个人,每个人都知道雷的确切位置,每个人一次可以点一部,问你谁能赢. 链接:http://acm.hdu.edu.cn/showproblem.php ...
- influxdb和boltDB简介——MVCC+B+树,Go写成,Bolt类似于LMDB,这个被认为是在现代kye/value存储中最好的,influxdb后端存储有LevelDB换成了BoltDB
influxdb influxdb是最新的一个时间序列数据库,最新一两年才产生,但已经拥有极高的人气.influxdb 是用Go写的,0.9版本的influxdb对于之前会有很大的改变,后端存储有Le ...