当前位置:首页 » 文件管理 » pythonhttp上传文件

pythonhttp上传文件

发布时间: 2023-02-01 22:17:04

‘壹’ 如何把python代码上传到服务器上

使用pip或easy_install可以管理和安装python的package包,实际上它们都是从pypi服务器中搜索和下载package的。目前在pypi服务器上,有超过三万多个package,同时还允许我们将自己的代码也上传发布到服务器上。这样,世界上的所有人都能使用pip或easy_install来下载使用我们的代码了。
具体步骤如下:
首先创建项目文件和setup文件。
目录文件结构如下:
project/
simpletest/
__init__.py
test.py
setup.py
假设项目文件只有一个simpletest包,里面有一个test.py文件。
创建的setup.py文件格式大致如下,其中,install_requires字段可以列出依赖的包信息,用户使用pip或easy_install安装时会自动下载依赖的包。详细的格式参考文档。
from setuptools import setup, find_packages
setup(
name = 'simpletest',
version = '0.0.1',
keywords = ('simple', 'test'),
description = 'just a simple test',
license = 'MIT License',
install_requires = ['simplejson>=1.1'],
author = 'yjx',
author_email = '[email protected]',

packages = find_packages(),
platforms = 'any',
)
然后将代码打包。
打包只需要执行python
setup.py xxx命令即可,其中xxx是打包格式的选项,如下:
# 以下所有生成文件将在当前路径下 dist 目录中
python setup.py bdist_egg # 生成easy_install支持的格式
python setup.py sdist # 生成pip支持的格式,下文以此为例
发布到pypi。
发布到pypi首先需要注册一个账号,然后进行如下两步:
注册package。输入python setup.py register。
上传文件。输入python setup.py sdist upload。
安装测试
上传成功后,就可以使用pip来下载安装了。
另外,pypi还有一个测试服务器,可以在这个测试服务器上做测试,测试的时候需要给命令指定额外的"-r"或"-i"选项,如python
setup.py register -r "",python
setup.py sdist upload -r "",pip
install -i "" simpletest。
发布到测试服务器的时候,建议在linux或cygwin中发布,如果是在windows中,参考文档,需要生成.pypirc文件

‘贰’ 怎么用http上传一个文件到服务器 python

首先,标准HTTP协议对上传文件等表单的定义在这里:wwwietforg/rfc/rfc1867txt 大概数据包格式如下:

单文件:

Content-type: multipart/form-data, boundary=AaB03x

--AaB03x
content-disposition: form-data; name="field1"

Joe Blow
--AaB03x
content-disposition: form-data; name="pics"; filename="file1.txt"
Content-Type: text/plain

... contents of file1.txt ...
--AaB03x--
多文件:

Content-type: multipart/form-data, boundary=AaB03x

--AaB03x
content-disposition: form-data; name="field1"

Joe Blow
--AaB03x
content-disposition: form-data; name="pics"
Content-type: multipart/mixed, boundary=BbC04y

--BbC04y
Content-disposition: attachment; filename="file1.txt"
其次,python上传文件的几种方法:

1 自己封装HTTP的POST数据包:http//stackoverflowcom/questions/680305/using-multipartposthandler-to-post-form-data-with-python

import httplibimport mimetypesdef post_multipart(host, selector, fields, files): content_type, body = encode_multipart_formdata(fields, files) h = httplib.HTTP(host) h.putrequest('POST', selector) h.putheader('content-type', content_type) h.putheader('content-length', str(len(body))) h.endheaders() h.send(body) errcode, errmsg, headers = h.getreply() return h.file.read() def encode_multipart_formdata(fields, files): LIMIT = '----------lImIt_of_THE_fIle_eW_$' CRLF = '\r\n' L = [] for (key, value) in fields: L.append('--' + LIMIT) L.append('Content-Disposition: form-data; name="%s"' % key) L.append('') L.append(value) for (key, filename, value) in files:

‘叁’ Python的文件上传

Python中使用GET方法实现上传文件,下面就是用Get上传文件的例子,client用来发Get请求,server用来收请求。

请求端代码:

importrequests#需要安装requests
withopen('test.txt','rb')asf:
requests.get('http://服务器IP地址:端口',data=f)

服务端代码:

varhttp=require('http');
varfs=require('fs');
varserver=http.createServer(function(req,res){
//console.log(req);
varrecData="";
req.on('data',function(data){
recData+=data;
})
req.on('end',function(data){
recData+=data;
fs.writeFile('recData.txt',recData,function(err){
console.log('filereceived');
})
})
res.end('hello');
})
server.listen(端口);

‘肆’ 怎么用ajax实现上传文件的功能

HTTP File Server

http-file-server是用 python 实现的 HTTP 文件服务器,支持上传和下载文件。

运行

$ python file-server.py files 8001

其中第一个参数files是存放文件的路径,第二个参数8001是 HTTP 服务器端口。

接口

1. 读取文件

GET /pathtofile/filename

2. 读取文件夹下所有文件(已经忽略隐藏文件)

GET /path

返回文件列表为JSON数组,文件名末尾带有/的表示是文件夹。filename为文件名,mtime为修改时间。

[{"filename":"f1.txt","mtime":1001},{"filename":"p3/","mtime":1002}]

3. 上传文件

采用POST方式上传文件,URL参数中传参数name表示上传的文件名,POST内容为文件内容。

POST /upload?name=filename

ajax示例:

// file is a FileReader object
var data = file.readAsArrayBuffer();
var xhr = new XMLHttpRequest();
var url = "http://localhost:8001/upload?name=xxx.md";
xhr.open("post", url, true);
xhr.setRequestHeader("Accept", "application/json, text/javascript, */*; q=0.01");
xhr.onreadystatechange = function() {
if (xhr.readyState==4 && xhr.status==200)
{
console.log(xhr.responseText);
}
}
xhr.send(data);

文件名 filename 可以包含相对路径。比如:upload?name=md/xxx.md。则上传至md目录下。

‘伍’ python文件转字节流上传

图片,视频都是二进制的,你读取的时候写 rb ,然后你在请求的时候记得把视频转成.content

像这样load_src = requests.get("http://"+srcs[i], headers=headers).content

‘陆’ 如何在 Python 中模拟 post 表单来上传文件

在机器上安装了Python的setuptools工具,可以通过下面的命令来安装 poster:

easy_installposter

装完之后,安装下面代码就可以实现post表单上传文件了:

fromposter.encodeimportmultipart_encode
fromposter.streaminghttpimportregister_openers
importurllib2

#在urllib2上注册http流处理句柄
register_openers()

#开始对文件"DSC0001.jpg"的multiart/form-data编码
#"image1"是参数的名字,一般通过HTML中的<input>标签的name参数设置

#headers包含必须的Content-Type和Content-Length
#datagen是一个生成器对象,返回编码过后的参数
datagen,headers=multipart_encode({"image1":open("DSC0001.jpg","rb")})

#创建请求对象(localhost服务器IP地址,5000服务器端口)
request=urllib2.Request("http://localhost:5000/upload_image",datagen,headers)
#实际执行请求并取得返回
printurllib2.urlopen(request).read()

‘柒’ python request/读写/上传文件

python 读写文件:

data_json = json.mps(result_r)  #json字符串  

f =open('E://XXX.txt',"a+")  #打开文件,追加+读写

f.write(data_json) # data_json 写入XXX.txt'文件

f.seek(0)  # 光标移动到文件开头

lines = f.read() # 逐行读入

f.close() #关闭文件

mode 打开的方式(r,w,a,x,b,t,r+,w+,a+,U)

r 以只读方式打开文件。文件的指针会放在文件的开头。

w 以写入方式打开文件。文件存在覆盖文件,文件不存在创建一个新文件。

a 以追加方式打开文件。如果文件已存在,文件指针放在文件末尾。如果文件不存在,创建新文件并可写入。

r+ 打开一个文件用于读写,文件指针会放在文件的开头

w+ 打开一个文件用于读写,文件存在覆盖文件,文件不存在创建一个新文件。

a+ 打开一个文件用于读写,如果文件已存在,文件指针放在文件末尾。如果文件不存在,创建新文件并可写入。

记忆方法:记住r读,w写,a追加,每个模式后加入+号就变成可读写。

f =open('E://xxx.txt',"a+")    /    f=open(r'E://xxx.txt',mode='a+',encoding='UTF-8')

踩坑1>  

没有加encoding='UTF-8',可能会报如下错:

import requests  # 使用 request函数需导入 request 库

import json   #使用 JSON 函数需要导入 json 库: import json 。

param ={} #请求body

url ='http://域名/api' 

header = {'content-type':'application/json'}

r = requests.post(url,json=param,headers=header)    #发送post请求

result_r = r.json() #请求返回的json传入对象result_r

data_json = json.mps(result_r)  #将 Python-result_r对象转为字符串 json.mps()

文件上传请求(csv文件)

file_path = "xxx.csv"   文件路径

uploaddata = {"file":open(file_path, "rb")}  

file_upload_result = requests.post(api_URL, files=uploaddata, cookies=cookie)

‘捌’ python flask 上传多个文件,代码怎么写

include <iostream>
#include <stdio.h>
int jc(int m){
if(m!=1) return m*jc(m-1);
else return 1;
}
int c(int m,int n){
if(m>=n) return jc(m)/(jc(n)*jc(m-n));
}
int main(void){
int m,n;
scanf("%d%d",&m,&n);
printf("%d\n",c(m,n));
return 0;
}

‘玖’ 如何用Python写一个http post请求

HTTP 协议规定 POST 提交的数据必须放在消息主体(entity-body)中,但协议并没有规定数据必须使用什么编码方式。常见的四种编码方式如下:
1、application/x-www-form-urlencoded
这应该是最常见的 POST 提交数据的方式了。浏览器的原生 form 表单,如果不设置 enctype 属性,那么最终就会以 application/x-www-form-urlencoded 方式提交数据。请求类似于下面这样(无关的请求头在本文中都省略掉了):
POST HTTP/1.1 Content-Type:
application/x-www-form-urlencoded;charset=utf-8
title=test&sub%5B%5D=1&sub%5B%5D=2&sub%5B%5D=3

2、multipart/form-data
这又是一个常见的 POST 数据提交的方式。我们使用表单上传文件时,必须让 form 的 enctyped 等于这个值,下面是示例
POST HTTP/1.1
Content-Type:multipart/form-data; boundary=----
------
Content-Disposition: form-data; name="text"
title
------
Content-Disposition: form-data; name="file"; filename="chrome.png"
Content-Type: image/png
PNG ... content of chrome.png ...
--------

3、application/json
application/json 这个 Content-Type 作为响应头大家肯定不陌生。实际上,现在越来越多的人把它作为请求头,用来告诉服务端消息主体是序列化后的 JSON 字符串。由于 JSON 规范的流行,除了低版本 IE 之外的各大浏览器都原生支持 JSON.stringify,服务端语言也都有处理 JSON 的函数,使用 JSON 不会遇上什么麻烦。
4、text/xml
它是一种使用 HTTP 作为传输协议,XML 作为编码方式的远程调用规范。
那么Python在调用外部http请求时,post请求怎么传请求体呢?说实话楼主只实践过【1、application/x-www-form-urlencoded】【2、multipart/form-data 】和【3、application/json】
一、application/x-www-form-urlencoded
import urllib

url = ""
body_value = {"package": "com.tencent.lian","version_code": "66" }
body_value = urllib.urlencode(body_value)
request = urllib2.Request(url, body_value)
request.add_header(keys, headers[keys])
result = urllib2.urlopen(request ).read()

二、multipart/form-data
需要利用python的poster模块,安装poster:pip install poster
代码:
from poster.encode import multipart_encode
from poster.streaminghttp import register_openers

url = ""
body_value = {"package": "com.tencent.lian","version_code": "66" }
register_openers()
datagen, re_headers = multipart_encode(body_value)
request = urllib2.Request(url, datagen, re_headers)
# 如果有请求头数据,则添加请求头
request .add_header(keys, headers[keys])
result = urllib2.urlopen(request ).read()

二、application/json
import json

url = ""
body_value = {"package": "com.tencent.lian","version_code": "66" }
register_openers()
body_value = json.JSONEncoder().encode(body_value)
request = urllib2.Request(url, body_value)
request .add_header(keys, headers[keys])
result = urllib2.urlopen(request ).read()

热点内容
c语言通用链表 发布:2025-05-13 19:53:04 浏览:805
lol挂机脚本后台 发布:2025-05-13 19:51:23 浏览:573
红米note3怎么锁屏密码忘了怎么办 发布:2025-05-13 19:51:03 浏览:191
sql数据库报表 发布:2025-05-13 19:49:56 浏览:519
c语言编程代码 发布:2025-05-13 19:48:17 浏览:704
安卓的AndroidAuto 发布:2025-05-13 19:41:49 浏览:358
下载安装python 发布:2025-05-13 19:39:21 浏览:28
苹果手机如何退出ad密码 发布:2025-05-13 19:35:24 浏览:353
资本论中央编译局 发布:2025-05-13 19:21:50 浏览:134
python路径是否存在 发布:2025-05-13 19:08:38 浏览:570