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 ...
随机推荐
- SOA和SaaS的区别
SOA,Service Oriented ArchITecture,面向服务的架构 SaaS,Software as a Service https://blog.csdn.net/chenyi888 ...
- JavaScript 获取对象属性和方法
ShineJaie 原创整理,转载请注明出处. 一.获取对象属性和方法 Object.keys() 返回对象的可枚举属性和方法的名称数组. Object.getOwnPropertyNames() 返 ...
- DML,DML,DCL,DQL
可以先看看这篇微博:http://blog.csdn.net/jiben2qingshan/article/details/7832344 http://blog.163.com/chenwenlin ...
- 1059: [ZJOI2007]矩阵游戏 二分图匹配
https://www.lydsy.com/JudgeOnline/problem.php?id=1059 裸的二分图匹配,行列匹配即可 /****************************** ...
- classpath到底指的哪里
之前一直对classpath不太明白到底指的哪里,今天研究了一下,做个总结.. classpath顾名思义就是指类路径,但是这样解释可能还是不明白,这里拿一个SpringBoot应用编译后生成的tar ...
- 修改tomcat默认端口号8080
1.背景 在默认情况下,tomcat的端口是8080,使用了两个tomcat,那么就需要修改其中的一个的端口号才能使得两个同时工作. 2.方法 2.1改动一 那么,如何修改tomcat的端口号呢?首先 ...
- 创建mysql表
CREATE TABLE `t_play_product` ( `product_id` ) NOT NULL AUTO_INCREMENT COMMENT '主键ID,自增', `product_n ...
- 不使用构造方法创建Java对象: objenesis的基本使用方法
转载:http://blog.csdn.net/codershamo/article/details/52015206 objenesis简介: objenesis是一个小型Java类库用来实例化一个 ...
- 014——数组(十四)array_reduce array_slice array_splice array_sum
<?php /** */ //array_reduce()递归的用回调函数递归的对数组元素进行处理,返回处理后的值 /*$arr=array(1,2,3,4,5); function func( ...
- hdu 4771 13 杭州 现场 B - Stealing Harry Potter's Precious 暴力bfs 难度:0
Description Harry Potter has some precious. For example, his invisible robe, his wand and his owl. W ...