前端上傳元件Plupload使用---上傳大視訊(分片上傳)
上傳視訊到伺服器
1.引入js外掛:
<script type="text/javascript" src="{{ static_url('plupload/js/plupload.full.min.js') }}"></script>
2.
html頁面如圖:
<script> <label>上傳視訊:</label> <input type="text" name="video_url" id="video_url" style="display: none"> <button class="btn new_btn-w-m btn-primary" href="#" id="video_upload_btn">上傳視訊 <span id="Progress" style=" opacity: 0.6;z-index:10; position: absolute; bottom: 0; left: 0; height: 100%; width: 0%; display: block; background-color: #003399"></span> </button> <span class="color-gray">支援AVI、wma、rmvb、rm、flash、mp4、mid、3GP等格式</span> <video controls='controls' style="margin-top: 10px;max-width: 400px;width: 100%;"> <source src="" type='video/mp4' id="video"> </video> <p class="showInfo"></p> </script>
3.js程式碼
<script> $(function () { var uploader_video = new plupload.Uploader({//建立例項的構造方法 runtimes: 'gears,html5,html4,silverlight,flash', //上傳外掛初始化選用那種方式的優先順序順序 browse_button: ['video_upload_btn'], // 上傳按鈕 url: "/ajax/upload_video?path=videos", //遠端上傳地址 // flash_swf_url: 'js/plugins/plupload/Moxie.swf', //flash檔案地址 // silverlight_xap_url: 'js/plugins/plupload/Moxie.xap', //silverlight檔案地址 filters: { max_file_size: '1gb', //最大上傳檔案大小(格式100b, 10kb, 10mb, 1gb) mime_types: [//允許檔案上傳型別 {title: "files", extensions: "mpg,m4v,mp4,flv,3gp,mov,avi,rmvb,mkv,wmv"} ] }, multipart_params: { '_xsrf': $("input[name='_xsrf']").val() }, chunk_size: "50mb", //分片上傳檔案時,每片檔案被切割成的大小,為數字時單位為位元組。也可以使用一個帶單位的字串,如"200kb"。當該值為0時表示不使用分片上傳功能 multi_selection: false, //true:ctrl多檔案上傳, false 單檔案上傳 init: { FilesAdded: function(up, files) { //檔案上傳前 plupload.each(files, function (file1) { uploader_video.start(); }); }, UploadProgress: function(up, file) { //上傳中,顯示進度條 $('#Progress').css('width', file.percent+'%'); }, FileUploaded: function(up, file, info) { //檔案上傳成功的時候觸發 var base = '/static/media/videos/'; var response = $.parseJSON(info.response); if (response.status == 'ok') { var url = "http://"+location.host+base + response.name; $("#video").show().attr("src", url); // console.log($("#video").parent()); $("#video").parent().get(0).load(); $("#video_url").val(url); } else { alert(response.error); } }, Error: function(up, errObject) { //上傳出錯的時候觸發 alert(errObject.code+errObject.message); } } }); uploader_video.init(); }); </script>
後端程式碼
1.url路由
(r"/ajax/upload_video", UploadVideoFile),
2.python程式碼
class UploadVideoFile(BaseHandler): def post(self): path = self.get_argument("path") input_name = self.get_argument("iname", "") nums = self.get_argument("chunks", "") num = self.get_argument("chunk", "") # 視訊檔名 filename = self.get_argument("name", "") # 得到視訊的儲存路徑upload_path,就是視訊檔案在哪個資料夾下面 upload_path = os.path.join(self.settings['upload_path'], path) print path, nums, num, filename, upload_path # 視訊儲存路徑+視訊檔名 filepath = os.path.join(upload_path, filename) # 若不存在此目錄,則建立之 if not os.path.isdir(upload_path): # upload_path = upload_path.replace("/", "\\") #windows platform os.makedirs(upload_path) file_metas = self.request.files.get('file', []) # filename = '' try: for meta in file_metas: filename = meta['filename'] print filename # 下面註釋的地方不分片時需要用到,分片時用不到 # ext = os.path.splitext(filename)[1] # 生成隨機檔名 # filename = str(uuid.uuid4()) # filename = '%s%s' % (filename, ext) # filepath = os.path.join(upload_path, filename) # filepath = os.path.join(upload_path, num) with open(filepath, 'ab') as up: up.write(meta['body']) except Exception as e: print e return self.write(json.dumps({"status": 'error', "msg": u"視訊檔案上傳失敗,請重新上傳"})) else: print json.dumps({"status": 'ok', "msg": "", "base_url": "", "name": filename}) return self.write(json.dumps({"status": 'ok', "msg": "", "base_url": "", "name": filename}))
傳送Ajax到後臺,把視訊或圖片儲存到資料庫(儲存的是地址)
1.ajax程式碼:
$('.btn.btn-white.add_content').click(function () {
if ($('#poster').attr('src') == '') {
alert('您還未上傳內容照片!');
return false;
}
if ($('#title').val() == '') {
alert("內容標題不能為空!");
return false;
}
var xjson = {
"title": $("#title").val(),
"brief": $("#brief").val(),
"videourl" : $("#video_url").val(),
"image": $("#image_url").val(),
// "content": window.editor.html(),
"content": ue.getContentTxt(),
"category": $("#category").val(),
"tag" : $("#tag").val(),
'_xsrf': $("input[name='_xsrf']").val(),
};
$.ajax({
url: '/admin/study/recommend/add',
type: 'post',
data: xjson,
success: function (data) {
var jsons = jQuery.parseJSON(data);
alert(jsons.msg);
if (jsons.status == "ok") {
location.reload();
}
},
error: function () {
alert('error');
}
});
});
2.後代儲存程式碼
class AdminAddStudyRecommend(BaseHandler):
"""增加學習推薦"""
@BaseHandler.admin_authed
def post(self):
datas = self.request.arguments
print "Add recommend=>",datas
info = dict()
last = self.db.tb_study_recommend.find_one({},{"id":1,"_id":0},sort=[("id", pymongo.DESCENDING)])
info['id'] = int(last.get("id",0)) + 1 if last else 1
info['title'] = self.get_argument('title')
info['brief'] = self.get_argument('brief')
info['img'] = self.get_argument('image')
info['content'] = self.get_argument('content')
info['category'] = self.get_argument('category')
info['tag'] = self.get_argument('tag',info.get('category'))
info['status'] = 1
for k, v in info.iteritems():
if not v:
return self.write(json.dumps({"status": 'error', "msg": k + "為必選項,請輸入資訊!"}))
info["videourl"] = self.get_argument('videourl',"")
info['userid'] = self.admin['userid']
info['atime'] = time.strftime("%Y-%m-%d %H:%M:%S")
self.db.tb_study_recommend.insert(info)
return self.write(json.dumps({"status": "ok", "msg": u'增加推薦內容成功'}))
相關推薦
前端上傳元件Plupload使用---上傳大視訊(分片上傳)
上傳視訊到伺服器 1.引入js外掛: <script type="text/javascript" src="{{ static_url('plupload/js/plupload.full.min.js') }}"></script> 2.ht
前端上傳元件Plupload使用---上傳視訊
上傳視訊到伺服器 1.引入js外掛: <script type="text/javascript" src="{{ static_url('plupload/js/plupload.full.min.js') }}"></script> 2.ht
前端上傳元件Plupload使用指南 與swfupload一樣強大
Plupload是一款由著名的web編輯器TinyMCE團隊開發的上傳元件,簡單易用且功能強大,我們完全可以使用Plupload來代替以前的SWFUpload。 Plupload有以下功能和特點: 1、擁有多種上傳方式:HTML5、flash、silverlight以及傳統
在瀏覽器進行大檔案分片上傳(java服務端實現)
最近在做web網盤的系統,網盤最基本的功能便是檔案上傳,但是檔案上傳當遇到大檔案的時候,在web端按傳統方式上傳簡直是災難,所以大檔案上傳可以採用分片上傳的辦法。其主要思路是:1.大檔案上傳時進行分片;2.分片上傳;3.對分片檔案進行合併。 思路比較清晰簡單,但一些問題在於:1.大檔案如何進
PHP大檔案分片上傳的實現方法
一、前言 在網站開發中,經常會有上傳檔案的需求,有的檔案size太大直接上傳,經常會導致上傳過程中耗時太久,大量佔用頻寬資源,因此有了分片上傳。 分片上傳主要是前端將一個較大的檔案分成等分的幾片,標識當前分片是第幾片和總共幾片,待所有的分片均上傳成功的時候,在後臺進行合成檔案即可。 二、
網頁內實現大檔案分片上傳、斷點續傳
最近做公司的專案,需要在後臺控制系統中新增一個功能-------向伺服器傳送程式更新包;這些程式更新包大小不固定,但基本都在1G到4G之間,剛開始還真是難倒我了,因為之前的專案中沒有上傳過這麼大的檔案,還要斷點續傳,後來經過查資料,寫DEMO,這個問題終於解決了; 解決辦法: 使用XMLHt
java springboot 大檔案分片上傳處理
這裡只寫後端的程式碼,基本的思想就是,前端將檔案分片,然後每次訪問上傳介面的時候,向後端傳入引數:當前為第幾塊問價,和分片總數 下面直接貼程式碼吧,一些難懂的我大部分都加上註釋了: 上傳檔案實體類: /** * 檔案傳輸物件 * @ApiModel和@ApiModelProperty及C
eggJS大檔案分片上傳與合併
前臺上傳使用vue+axios 前臺程式碼: // 計算分片總數 for (let i = 0; i < Math.ceil(this.file.size / this.uploadFragment.fragment); i++) { this.uploadFra
php大檔案分片上傳
HTML <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="widt
前段WebUploader;JavaEE大檔案分片上傳接收
Web大檔案分片上傳 Web環境中大檔案上傳不能再用form表單一次上傳了,這樣效率太低; 我在不斷嘗試SpringMVC環境下分片接受檔案,最終失敗;原因目測是 SpringMVC、Struts框架是不支援HTML5方式上傳的(這類框架只能支援Form表單
iOS大檔案分片上傳和斷點續傳
總結一下大檔案分片上傳和斷點續傳的問題。因為檔案過大(比如1G以上),必須要考慮上傳過程網路中斷的情況。http的網路請求中本身就已經具備了分片上傳功能,當傳輸的檔案比較大時,http協議自動會將檔案切片(分塊),但這不是我們現在說的重點,我們要做的事是保證在網路中斷後1G
大文分片上傳 多執行緒上傳檔案(接收端)
package com.controller; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.RandomAccessFile; i
Android 大檔案分片上傳斷點續傳任務管理實現
Transer 是一個傳輸框架,目前支援: - 支援 HTTP/HTTPS 斷點續傳下載 - 支援 HTTP/HTTPS 大檔案分片上傳 - 支援 類EventBus的task狀態變更通知,支援三種執行緒的訂閱模式 - 支援 任務分組,分使用者
js實現大檔案分片上傳的方法
<input type="file" name="file" id="file"> <button id="upload" onClick="upload()">upload</button>var bytesPerPiece = 1024
webuploader在springMVC+jquery+Java開發環境下的大檔案分片上傳
參考的文章http://blog.csdn.net/new_sara/article/details/51604997 因為從網上看到的總是和自己專案開發有些許差別,所以也是在除錯了很久之後,發現適合自己專案的程式碼,現在把過程記錄下來,以便以後查閱. 注意: 1,web
Node + js實現大檔案分片上傳基本原理及實踐(一)
閱讀目錄 一:什麼是分片上傳? 二:理解Blob物件中的slice方法對檔案進行分割及其他知識點 三. 使用 spark-md5 生成 md5檔案 四. 使用koa+js實現大檔案分片上傳實踐 回到頂部 一:什麼是分片上傳? 分片上傳是把一個大的檔案分成若干塊,一塊一塊的傳輸。這
nodeJs + js 大檔案分片上傳
簡單的檔案上傳 一、準備檔案上傳的條件: 1、安裝nodejs環境 2、安裝vue環境 3、驗證環境是否安裝成功 二、實現上傳步驟 1、前端部分使用 vue-cli 腳手架,搭建一個 demo 版本,能夠實現簡單互動: <template> <div id="app">
.NET Core Web APi大檔案分片上傳研究
前言 前兩天發表利用FormData進行檔案上傳,然後有人問要是大檔案幾個G上傳怎麼搞,常見的不就是分片再搞下斷點續傳,動動手差不多也能搞出來,只不過要深入的話,考慮的東西還是很多。由於斷點續傳之前寫個幾篇,這裡試試利用FormData來進行分片上傳。 .NET Core Web APi檔案分片上傳 這裡我們
前端上傳元件WebUploader大檔案上傳與Python結合的實現
Python實現大檔案分片上傳 引言 想借著這篇文章簡要談談WebUploader大檔案上傳與Python結合的實現。 WebUploader是百度團隊對大檔案上傳的前端實現,而後端需要根據不同的語言自己實現。這裡我採用Python語言的Flask框架搭建後端,
js分片上傳大文件,前端代碼
asc 代碼 firmware ceil 發送 內存 ref war 上傳文件 首先導入jQuery.form.js文件,下面src是相對於改js文件位置, <script type="text/JavaScript" src="jquery/jquery-form.