业务场景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. js 函数中的this

    资料 function 函数 没有"this"的持久概念, 调用函数时,创建this function hello(thing) { console.log(this + &quo ...

  2. Luogu 1071 - 潜伏者 - [字符串]

    题目链接:https://www.luogu.org/problemnew/show/P1071 题解: 模拟就完事儿了. 注意failed的情况有:出现一个 $f[x]$ 对应多个值:存在两个不同的 ...

  3. SQL基础语法提纲

    一.SQL需知5点 1.SQL是Structured Query Language的缩写,是用来访问关系型数据库的,非过程化的,高级编程语言. 2.SQL具有语法高度综合统一,高度的非过程化,对集合进 ...

  4. lambda用法

    1.lambda为匿名函数,即不用起函数名2.如果函数使用次数很少并且很简洁,一般可以考虑用lambda函数3.lambda可以简化代码的可读性4.lambda不能使用if for等复杂的语法 示例一 ...

  5. luogu3978 [TJOI2015]概率论

    题目链接:洛谷 题目大意:求所有$n$个点的有根二叉树的叶子节点数总和/$n$个点的有根二叉树的个数. 数据范围:$n\leq 10^9$ 生成函数神题!!!!(我只是来水博客的) 首先$n$个点的有 ...

  6. 代码中特殊的注释技术——TODO、FIXME和XXX的用处(转)

    1.声明 本篇转自博客:http://blog.csdn.net/reille/ 2.转载内容 2.1.前言 今天在阅读 Qt Creator 的源代码时,发现一些注释中有 FIXME 英文单词,用英 ...

  7. Java+Selenium环境搭建

    初学者---简单的selenium环境搭建: 1. 安装JAVA环境 2.下载eclipse 3.下载firefox (不要最高版本,容易出现selenium不兼容问题) 4. 下载selenium需 ...

  8. vue项目搭建步骤

    https://blog.csdn.net/echo008/article/details/77099058 https://blog.csdn.net/echo008/article/details ...

  9. MySQL AUTO_INCREMENT 学习总结

    之前有碰到过开发同事指出一张InnoDB表的自增列 AUTO_INCREMENT 值莫明的变大,由于这张表是通过mysqldump导出导入的. 问题排查: 1.首先,查看表表义的sql部分的 auto ...

  10. python数据结构-如何实现用户的历史记录功能

    如何实现用户的历史记录功能 使用collections中的deque from collections import deque dq = deque([], 5) dq.append(1) dq.a ...