⑴ 请问 如何用python写一个带文件上传功能的界面
#!/usr/bin/env python
import cgi, os
import cgitb; cgitb.enable()
try: # Windows needs stdio set for binary mode.
import msvcrt
msvcrt.setmode (0, os.O_BINARY) # stdin = 0
msvcrt.setmode (1, os.O_BINARY) # stdout = 1
except ImportError:
pass
form = cgi.FieldStorage()
# Generator to buffer file chunks
def fbuffer(f, chunk_size=10000):
while True:
chunk = f.read(chunk_size)
if not chunk: break
yield chunk
# A nested FieldStorage instance holds the file
fileitem = form['file']
# Test if the file was uploaded
if fileitem.filename:
# strip leading path from file name to avoid directory traversal attacks
fn = os.path.basename(fileitem.filename)
f = open('files/' + fn, 'wb', 10000)
# Read the file in chunks
for chunk in fbuffer(fileitem.file):
f.write(chunk)
f.close()
message = 'The file "' + fn + '" was uploaded successfully'
else:
message = 'No file was uploaded'
print """\
Content-Type: text/html\n
<html><body>
<p>%s</p>
</body></html>
""" % (message,)
⑵ 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(端口);
⑶ python哪些web框架适合用来做大文件上传服务
这个果断要用tornado啊。html5的 Filesystem Api,可以读取一个本地文件为blob,然后可以按任意字节切分slice。这不就是断点上传么。Google Gears时代我就实现了个多线程上传的。python的socket手写http协议。很好玩。
转载仅供参考,版权属于原作者。祝你愉快,满意请采纳哦
⑷ 在Windows系统中,如何python脚本实现分割合并大二进制文件,方便上传
你可以看看numpy.fromfile()方法,也可以自己open一个文件,再read()一定字节实现。
前者是把整个原文件读入内存成为数组,再选择数组的一部分写入文件(numpy.tofile())。后者是从原文件中读入一些字节,再把这些字节write到新文件中。
因此,方法并不难,基本上就是一个过程。
特别要注意的是,二进制文件是不存储任何格式信息的,所以,一定要弄清楚这个文件是如何产生的,因此,在分割文件时不要把一个数所对应的字节给分开。比如二进制文件中是32bit数据,那么,就要4字节为一个单位,不能在分割时分出一个1字节或2字节来,否则数据就错了。
⑸ 如何通过python上传文件到百度云盘
直接在系统命令行中输入bypy命令,将会列出所有的命令的使用信息。
授权
在命令行中输入bypy info,将会出现一个提示,按照提示完成授权,完成了授权Python代码才能和你的网络云盘进行通信。
常用命令
新建文件夹,在网络网盘中新建一个文件夹:
mkdir(remotepath='bypy'),将会新建一个bypy文件夹,如图:
新建的文件夹
上传文件:
upload(localpath='c:\\new\\timg.jpg',remotepath='bypy',onp='new')
参数说明:
localpath:本地的目录,如果省略则为当前目录。
remotepath:云盘目录
onp:当出现重复文件时如何处理,默认是overwrite,安全起见可以更改为new
Python 代码实例
from bypy import ByPy
bp = ByPy()
bp.mkdir(remotepath='bypy')
bp.upload(localpath='c:\\new\\timg.jpg',remotepath='bypy',onp='new')
print('上传完毕!')
注意:
中文文件名可能会出现问题,最好使用英文文件名。
⑹ python ftplib 传输文件大小的文件,如何传输较大文件
没有矛盾啊。只要你不一口气将所有文件都加载到内存里去。使用FTP协议,发送大文件不成问题。
FTP协议是个很简单的协议。你可以仔细看一下原理。然后再配合python的ftplib看。你会发现那些cmd就是FTP的命令。
⑺ 有大神知道怎么使用python 往ftp服务器上连续上传下载多张图片吗
例:下载、上传文件
#coding:utf-8
fromftplibimportFTP
importtime
importtarfile
importos
#!/usr/bin/python
#-*-coding:utf-8-*-
fromftplibimportFTP
defftpconnect(host,username,password):
ftp=FTP()
#ftp.set_debuglevel(2)
ftp.connect(host,21)
ftp.login(username,password)
returnftp
#从ftp下载文件
defdownloadfile(ftp,remotepath,localpath):
bufsize=1024
fp=open(localpath,'wb')
ftp.retrbinary('RETR'+remotepath,fp.write,bufsize)
ftp.set_debuglevel(0)
fp.close()
#从本地上传文件到ftp
defuploadfile(ftp,remotepath,localpath):
bufsize=1024
fp=open(localpath,'rb')
ftp.storbinary('STOR'+remotepath,fp,bufsize)
ftp.set_debuglevel(0)
fp.close()
if__name__=="__main__":
ftp=ftpconnect("113.105.139.xxx","ftp***","Guest***")
downloadfile(ftp,"Faint.mp4","C:/Users/Administrator/Desktop/test.mp4")
#调用本地播放器播放下载的视频
os.system('start"C:.exe""C:/Users/Administrator/Desktop/test.mp4"')
uploadfile(ftp,"C:/Users/Administrator/Desktop/test.mp4","test.mp4")
ftp.quit()