⑴ 請問 如何用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()