zoukankan      html  css  js  c++  java
  • mui 上传视频

    mui 前端传输视频

    //上传视频
                function videoUpload() {
                    var url = ServerIp + "/api/upload/videoUpload";
                    var task = plus.uploader.createUpload(url, {
                            method: "POST"
                        },
                        function(t, status) {
                            if (status == 200) {
                                var hl = document.getElementById('history');
                                hl.innerHTML = '<li id="empty" class="ditem-empty"></li>';
                                hl.style.display = 'none';
                                console.log("上传成功:" + t.responseText);
                                videos = [];
                                vindex = 1;
                            } else {
                                console.log("上传失败:" + status);
                                videos = [];
                            }
                        }
                    );
                    //添加其他参数
                    for (var i = 0; i < videos.length; i++) {
                        var f = videos[i];
                        task.addFile(f.path, {
                            key: f.name
                        });
                    }
                    task.addData("business_id", confirm_id);
                    task.addData("business_type", "整改确认");
                    task.addData("item_id", _localStorage.getItem("record_id")); //记录表id
                    task.addData("file_type", 2);
                    task.addData("create_user", localStorage.getItem("realName"));
                    task.start();
                }
    
    var i = 1;
                var w = null;
    var videos = [];
    var vindex = 1;
                            //上传视频
                            document.getElementById('video').addEventListener('tap', function(e) {
                                if (mui.os.plus) {
                                    var buttonTit = [{
                                        title: "录制"
                                    }, {
                                        title: "从手机相册选择"
                                    }];
                                
                                    plus.nativeUI.actionSheet({
                                        cancel: "取消",
                                        buttons: buttonTit
                                    }, function(b) {
                                        switch (b.index) {
                                            case 0:
                                                break;
                                            case 1:
                                                getVideo(); //录制视频
                                                break;
                                            case 2:
                                                galleryVideo(); //打开相册
                                                break;
                                            default:
                                                break;
                                        }
                                    })
                                }
                            });
                //录制
                function getVideo() {
                    var cmr = plus.camera.getCamera();
                    cmr.startVideoCapture(function(p) {
                        console.log('成功:' + p);
                        plus.io.resolveLocalFileSystemURL(p, function(entry) {
                            createItem(entry);
                            appendVideo(p);
                        }, function(e) {
                            console.log('读取录像文件错误:' + e.message);
                        });
                    }, function(e) {
                        console.log('失败:' + e.message);
                    }, {
                        filename: '_doc/camera/',
                        index: i
                    });
                }
                // 从相册中选择视频
                function galleryVideo() {
                    plus.gallery.pick(function(e) {
                        plus.io.resolveLocalFileSystemURL(e, function(entry) {
                            createItem(entry);
                            //获取视频流文件
                            appendVideo(e);
                        }, function(p) {
                            console.log('读取录像文件错误:' + p.message);
                        });
                    }, function(e) {
                        console.log("取消选择视频");
                    }, {
                        filter: "video"
                    });
                }
                // 添加播放项
                function createItem(entry) {
                    $("#history").remove();
                    var divHtml = "<div class="a-add dlist" id="history">";
                    divHtml += "<div id="empty" class="ditem-empty"></div>";
                    divHtml += "<img  src="../../images/remove.png" class="a-remove_video"></div>";
                    $("#imgDiv").prepend(divHtml);
                    createItem1(entry);
                }
                
                function createItem1(entry) {
                    var hl = document.getElementById('history');
                    //hl.innerHTML = '<li id="empty" class="ditem-empty"></li>';
                    //hl.style.display = 'block';
                    var le = document.getElementById('empty');
                    var li = document.createElement('div');
                    li.className = 'ditem';
                    li.innerHTML = '<span class="iplay"><font class="ainf"></font></span>'
                    li.setAttribute('onclick', 'displayFile(this)');
                    hl.insertBefore(li, le.nextSibling);
                    li.querySelector('.ainf').innerText = '...';
                    li.entry = entry;
                    updateInformation(li);
                    // 设置空项不可见
                    le.style.display = 'none';
                }
                function displayFile(li) {
                    if (w) {
                        mui.alert('重复点击!');
                        return;
                    }
                    if (!li || !li.entry) {
                        mui.alert('无效的媒体文件');
                        return;
                    }
                    var name = li.entry.name;
                    var suffix = name.substr(name.lastIndexOf('.'));
                    var url = '';
                    if (suffix == '.mov' || suffix == '.3gp' || suffix == '.mp4' || suffix == '.avi') {
                        url = '/plus/camera_video.html';
                    } else {
                        url = '/plus/camera_image.html';
                    }
                    w = plus.webview.create(url, url, {
                        hardwareAccelerated: true,
                        scrollIndicator: 'none',
                        scalable: true,
                        bounce: 'all'
                    });
                    w.addEventListener('loaded', function() {
                        w.evalJS('loadMedia("' + li.entry.toLocalURL() + '")');
                    }, false);
                    w.addEventListener('close', function() {
                        w = null;
                    }, false);
                    w.show('pop-in');
                }
                // 获取录音文件信息
                function updateInformation(li) {
                    if (!li || !li.entry) {
                        return;
                    }
                    var entry = li.entry;
                    entry.getMetadata(function(metadata) {
                        li.querySelector('.ainf').innerText = dateToStr(metadata.modificationTime);
                    }, function(e) {
                        console.log('获取文件"' + entry.name + '"信息失败:' + e.message);
                    });
                }
    
    //视频
                function appendVideo(e) {
                    videos = [];
                    videos.push({
                        name: "file", //这个值服务器会用到,作为file的key 
                        path: e,
                    });
                    vindex++;
                }

    视频播放页

    <!DOCTYPE HTML>
    <html>
        <head>
            <meta charset="utf-8"/>
            <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
            <meta name="HandheldFriendly" content="true"/>
            <meta name="MobileOptimized" content="320"/>
            <title>Hello H5+</title>
            <script type="text/javascript" src="../js/extend.js"></script>
            <script type="text/javascript">
    var v=null;
    function loadMedia( src ) {
        v.src = src;
        v.play();
    }
    function videoFinished() {
        back();
    }
    function videoError(e) {
        switch (e.target.error.code) {
         case e.target.error.MEDIA_ERR_ABORTED:
           alert('You aborted the video playback.');
           break;
         case e.target.error.MEDIA_ERR_NETWORK:
           alert('A network error caused the video download to fail part-way.');
           break;
         case e.target.error.MEDIA_ERR_DECODE:
           alert('The video playback was aborted due to a corruption problem or because the video used features your browser did not support.');
           break;
         case e.target.error.MEDIA_ERR_SRC_NOT_SUPPORTED:
           alert('The video could not be loaded, either because the server or network failed or because the format is not supported.');
           break;
         default:
           alert('An unknown error occurred.');
           break;
       }
    
        plus.nativeUI.alert( "无效的视频资源", function(){
            back();
        } );
    }
    function init() {
        v = document.getElementById("video");
        //v.onended = videoFinished;
    }
            </script>
            <link rel="stylesheet" href="../css/common.css" type="text/css" charset="utf-8"/>
        </head>
        <body style="text-align:center;background:#DDDDDD;" onload="init();">
            <div style="100%;height:100%;display:table;" onclick="back();">
                <div style="display:table-cell;vertical-align:middle;">
                    <video id="video" style="100%;" autoplay controls onerror="videoError(event);"></video>
                </div>
            </div>
        </body>
    </html>

    后台接口

    [Route("videoUpload"), HttpPost]
            public IHttpActionResult videoUpload()
            {
                bool result = false;
                int count = HttpContext.Current.Request.Files.Count;
                string filename = "";
                string compressname = "";
                try
                {
                    for (int i = 0; i < count; i++)
                    {
                        //int l = HttpContext.Current.Request.Files["video" + (i + 1)].ContentLength;
                        int l = HttpContext.Current.Request.Files["file"].ContentLength;
                        byte[] buffer = new byte[l];
                        //Stream s = HttpContext.Current.Request.Files["video" + (i + 1)].InputStream;
                        Stream s = HttpContext.Current.Request.Files["file"].InputStream;
                        string imgname = Guid.NewGuid().ToString() + ".mp4";
                        string comname = Guid.NewGuid().ToString();
                        AliyunOSS.PutObject(bucketName, "不符合项/" + imgname, s);
                        #region 记录表
                        im_file file = new im_file();
                        file.id = Guid.NewGuid().ToString();
                        file.business_id = HttpContext.Current.Request.Form["business_id"];
                        file.business_type = HttpContext.Current.Request.Form["business_type"];
                        file.item_id = HttpContext.Current.Request.Form["item_id"];
                        file.file_name = "不符合项/" + imgname;
                        file.file_path = filename;
                        file.compressedfile_path = compressname;
                        file.file_type = 2;
                        file.create_user = HttpContext.Current.Request.Form["create_user"];
                        file.create_date = DateTime.Now;
                        _fileRepository.Insert(file);
                        #endregion
                        result = true;
                    }
                }
                catch (Exception e)
                {
                    result = false;
                }
                return Ok(result);
            }
  • 相关阅读:
    IT民工的时间哪儿来的
    解决Office2007安装时出现错误1706的方法
    情人节特献:有心之函数必然就有分手函数
    mathematica汉化 版本二
    项目经理职责与权利
    什么是产品经理?主要职责是什么?
    调查收藏
    如何在CLI命令行下运行PHP脚本,同时向PHP脚本传递参数?
    PHP的GC垃圾收集机制
    AWStats分析Tomcat\Apache\IIS\nginx 的访问日志
  • 原文地址:https://www.cnblogs.com/yyjspace/p/12030024.html
Copyright © 2011-2022 走看看