业务场景1: 后台要上传视频,图片到网站的首页或者附页,上传后,视频,图片存储到服务器或cdn,但是此时还要加确定按钮以实现该视频,图片路径数据库的插入操作.

页面展现: 点击操作按钮,触发input的click事件,再监听input的change事件,完成按钮到input的文件上传转换.

代码部分:

<video src="" id="showvideo2" style="height: 300px;width: 400px"></video>
<form id="uploadVideo2Form" enctype='multipart/form-data' style="display: none">
<input id="video2Input" name="video2" type="file" class="form-control-file" style="display: none;">
</form> <a id="uploadVideo2Btn" iconCls="icon-add" class="easyui-linkbutton"
plain="true">上传关于中商视频</a>
<div id="video2Div"></div>

上方表示视频的标签,用来获取ajax回调的路径参数,用于预览视频.

form中的input为视频传入input, 而触发它的是下面的a标签.

(这么做是实现样式的需要,单纯的input是非常难看的)

  var thisVideo = null;

  $("#uploadVideo1Btn").click(function () {
thisVideo = 1;
$("#video1Input").click();
});
$("#video1Input").change(videoAjax); $("#uploadVideo2Btn").click(function () {
thisVideo = 2;
$("#video2Input").click();
});
$("#video2Input").change(videoAjax);

因为包含两个视频,所以用变量thisVideo来那个是哪个视频的操作.(用于ajax传值与回调配置)

function videoAjax() {
var uploadFile = $("#video" + thisVideo + "Input")[0].files[0];
console.log(uploadFile);
var formData = new FormData();
formData.append("uploadFile", uploadFile);
// if ("undefined" != typeof(uploadFile) && uploadFile != null && uploadFile != "") {
$.ajax({
url: '/upload/video' + '/' + thisVideo + '/',
type: 'POST',
data: formData,
async: false,
cache: false,
contentType: false, //不设置内容类型
processData: false, //不处理数据
success: function (result) {
// alert(data);
if (result.success) {
$.messager.alert('操作结果', '上传数据成功');
$("#booten").linkbutton('enable');
$('#uploadonlineinfo').dialog('close');
var videoPath = null;
for (var i in result.data) {
videoPath = result.data[i];
}
$("#showvideo" + thisVideo + "").attr("src", videoPath);
//设定新的按钮,确定,取消该视频
$("#uploadVideo" + thisVideo + "Btn").hide();
let confirmBtn = document.createElement("button");
let btnText = document.createTextNode("确定使用该视频");
confirmBtn.id = "confirmBtn";
confirmBtn.appendChild(btnText);
confirmBtn.setAttribute("onclick", "confirmVideo()"); let cancelBtn = document.createElement("button");
let btnText1 = document.createTextNode("取消");
cancelBtn.id = "cancelBtn";
cancelBtn.appendChild(btnText1);
cancelBtn.setAttribute("onclick", "cancelInAjax(1)"); $("#video" + thisVideo + "Div").append(confirmBtn);
$("#video" + thisVideo + "Div").append(cancelBtn); // $('#dg').datagrid('reload');
} else {
$.messager.alert('操作结果', '上传数据失败');
$('#uploadonlineinfo').dialog('close');
}
}
});
}

上面的ajax即video上传的ajax代码,注意上传成功后,执行了一系列操作: 隐藏上传按钮,展示[确定,取消]按钮.

[确定,取消]按钮对应两个方法调用:

//确定使用该视频
function confirmVideo() {
alert("确定视频方法")
//执行ajax将视频url及modelId传入数据库video表
let nowVideoSrc = $("#showvideo" + thisVideo + "").attr("src");
let nowVideoModelId = thisVideo;
$.ajax({
url: '/demand/addVideo',
data: {"v_url": nowVideoSrc, "model_id": nowVideoModelId},
dataType: 'json',
type: 'post',
success: function (result) {
if (result.success) {
$.messager.alert('操作结果', '操作成功');
cancelInAjax();
} else {
$.messager.alert('操作结果', '操作失败');
cancelInAjax();
}
}
})
} //取消视频 或 确定后返回原始按钮
function cancelInAjax(value) {
alert("取消");
if (value == 1) {
$("#confirmBtn").hide();
$("#cancelBtn").hide();
$("#showvideo" + thisVideo + "").attr("src", "");
$("#uploadVideo" + thisVideo + "Btn").show();
} else {
$("#confirmBtn").hide();
$("#cancelBtn").hide();
$("#uploadVideo" + thisVideo + "Btn").show();
}
}

至此,文件上传后,预览,并再确定后执行文件路径的数据库保存顺序确立.

[ajax] - 上传图片,视频后的路径回传及确定逻辑的更多相关文章

  1. 使用ajax上传图片,支持图片即时浏览,支持js图片压缩后上传给服务器

    使用ajax上传图片,支持图片即时浏览,支持js图片压缩后上传给服务器 ajax上传主要使用了 var reader = new FileReader() 此方法 js图片压缩主要是利用canvas进 ...

  2. ajax上传图片

    选择文件后 ajax上传图片到后台,后台执行保存操作,返回上传的图片路径,显示到页面 需要引入ajaxfileupload.js js代码 <script type="text/jav ...

  3. asp.net core 通过ajax上传图片及wangEditor图片上传

    asp.net core 通过ajax上传图片 .net core前端代码,因为是通过ajax调用,首先要保证ajax能调用后台代码,具体参见上一篇.net core 使用ajax调用后台代码. 前端 ...

  4. vuejs使用FormData对象,ajax上传图片文件

    我相信很多使用vuejs的朋友,都有采用ajax上传图片的需求,因为前后端分离后,我们希望都能用ajax来解决数据问题,传统的表单提交会导致提交成功后页面跳转,而使用ajax能够无刷新上传图片等文件. ...

  5. 使用ajax上传图片,并且使用canvas实现出上传进度效果

    前端代码: <%@ page contentType="text/html;charset=UTF-8" language="java" %> &l ...

  6. Ajax上传图片以及上传之前先预览

    手头上有几个小项目用到了easyUI,一开始决定使用easyUI就注定了项目整体上前后端分离,基本上所有的请求都采用Ajax来完成.在文件上传的时候用到了Ajax上传文件,以及图片在上传之前的预览效果 ...

  7. ajax请求成功后打开新开窗口(window.open())被拦截的解决方法

    问题:今天在做项目时需要在ajax请求成功后打开一个新的窗口,此时遇到浏览拦截了新窗口的问题,尝试在ajax 回调函数中模拟执行 click 或者 submit 等用户行为(trigger('clic ...

  8. ajaxfileUpload ajax 上传图片使用

    前台html: <div class="b-mg15 img-text" room_id="<?= $items['id'] ?>"> ...

  9. Ajax请求URL后加随机数原理

    原文:Ajax请求URL后加随机数原理 例如: $.ajax({             type: "GET",    url: "login.action?ran=& ...

随机推荐

  1. 移动端如何用swiper实现导航栏效果

    在移动端如何用swiper实现导航栏效果 我们在写移动端的时候会有滑动和点击导航后滑动到目标页面功能:而这个功能如果自己写的话会很麻烦,所以我在这推荐一下swiper这个插件. 其实swiper中的官 ...

  2. Git Bash上传文件

    今天通过Git Bash上传了一个项目(之前是通过Github Desk上传的),操作命令如下: 在目录下shift+右键打开Git Bash 1.git init 2.git add *.py 3. ...

  3. Android开发网【申明:来源于网络】

    Android开发网[申明:来源于网络] 地址:http://www.jizhuomi.com/android/video/

  4. 浅谈 pid的原理与差异

    pid  官方语言就是:比例   积分 微分.究其本质意义,比例到底是什么,原理是什么,这三个到底如何在物理世界这种运作的,大概了解的人又很少.过惯了拿起数据公式无脑推的日子的人更是如此,数学公式是很 ...

  5. ssh无输入密码登录问题

    每天一个Linux命令:ps命令 ssh原理和运用(一):远程登录 http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html SSH是每 ...

  6. 苹果cms安装及配置详细教程

    听说这个好!php+mysql的 下载 http://www.maccms.com/down.html 下载之后解压到你的网站跟目录中,就像这个样子的   后台目录 然后重要的一步来了,在ftp工具上 ...

  7. 1: unit test

    1: se01  进入到TR包里面,创建自己的包.(开发过程中,每个人创建一个包,最后每个包合成一个team的TR包.整个产品将所有的TR包合成,发布. 2:向cds view里面插入假数据 3:使用 ...

  8. IO实时监控命令iostat详解

    iostat用于输出CPU和磁盘I/O相关的统计信息 命令格式 iostat [ -c ] [ -d ] [ -h ] [ -N ] [ -k | -m ] [ -t ] [ -V ] [ -x ] ...

  9. 公网k8s

    dm :32750/swagger/ 统一在   cd /opt/iot 删除容器,自动创建容器 dm 更新dm和acl包  dm源文件chart包   cd /var/lib/helmrepo/ h ...

  10. 谷歌PM面试官告诉你,如何成功拿到理想offer

    快来看看大咖Nick如何甄选人才~文章转自墨刀公众号. 本文作者: Nick Baum,目前在谷歌做PM 作为谷歌的产品经理和面试官,我已经面过几百个PM的候选人了吧.这些经历能让我分享一下在PM求职 ...