[ajax] - 上传图片,视频后的路径回传及确定逻辑
业务场景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] - 上传图片,视频后的路径回传及确定逻辑的更多相关文章
- 使用ajax上传图片,支持图片即时浏览,支持js图片压缩后上传给服务器
使用ajax上传图片,支持图片即时浏览,支持js图片压缩后上传给服务器 ajax上传主要使用了 var reader = new FileReader() 此方法 js图片压缩主要是利用canvas进 ...
- ajax上传图片
选择文件后 ajax上传图片到后台,后台执行保存操作,返回上传的图片路径,显示到页面 需要引入ajaxfileupload.js js代码 <script type="text/jav ...
- asp.net core 通过ajax上传图片及wangEditor图片上传
asp.net core 通过ajax上传图片 .net core前端代码,因为是通过ajax调用,首先要保证ajax能调用后台代码,具体参见上一篇.net core 使用ajax调用后台代码. 前端 ...
- vuejs使用FormData对象,ajax上传图片文件
我相信很多使用vuejs的朋友,都有采用ajax上传图片的需求,因为前后端分离后,我们希望都能用ajax来解决数据问题,传统的表单提交会导致提交成功后页面跳转,而使用ajax能够无刷新上传图片等文件. ...
- 使用ajax上传图片,并且使用canvas实现出上传进度效果
前端代码: <%@ page contentType="text/html;charset=UTF-8" language="java" %> &l ...
- Ajax上传图片以及上传之前先预览
手头上有几个小项目用到了easyUI,一开始决定使用easyUI就注定了项目整体上前后端分离,基本上所有的请求都采用Ajax来完成.在文件上传的时候用到了Ajax上传文件,以及图片在上传之前的预览效果 ...
- ajax请求成功后打开新开窗口(window.open())被拦截的解决方法
问题:今天在做项目时需要在ajax请求成功后打开一个新的窗口,此时遇到浏览拦截了新窗口的问题,尝试在ajax 回调函数中模拟执行 click 或者 submit 等用户行为(trigger('clic ...
- ajaxfileUpload ajax 上传图片使用
前台html: <div class="b-mg15 img-text" room_id="<?= $items['id'] ?>"> ...
- Ajax请求URL后加随机数原理
原文:Ajax请求URL后加随机数原理 例如: $.ajax({ type: "GET", url: "login.action?ran=& ...
随机推荐
- js 函数中的this
资料 function 函数 没有"this"的持久概念, 调用函数时,创建this function hello(thing) { console.log(this + &quo ...
- Luogu 1071 - 潜伏者 - [字符串]
题目链接:https://www.luogu.org/problemnew/show/P1071 题解: 模拟就完事儿了. 注意failed的情况有:出现一个 $f[x]$ 对应多个值:存在两个不同的 ...
- SQL基础语法提纲
一.SQL需知5点 1.SQL是Structured Query Language的缩写,是用来访问关系型数据库的,非过程化的,高级编程语言. 2.SQL具有语法高度综合统一,高度的非过程化,对集合进 ...
- lambda用法
1.lambda为匿名函数,即不用起函数名2.如果函数使用次数很少并且很简洁,一般可以考虑用lambda函数3.lambda可以简化代码的可读性4.lambda不能使用if for等复杂的语法 示例一 ...
- luogu3978 [TJOI2015]概率论
题目链接:洛谷 题目大意:求所有$n$个点的有根二叉树的叶子节点数总和/$n$个点的有根二叉树的个数. 数据范围:$n\leq 10^9$ 生成函数神题!!!!(我只是来水博客的) 首先$n$个点的有 ...
- 代码中特殊的注释技术——TODO、FIXME和XXX的用处(转)
1.声明 本篇转自博客:http://blog.csdn.net/reille/ 2.转载内容 2.1.前言 今天在阅读 Qt Creator 的源代码时,发现一些注释中有 FIXME 英文单词,用英 ...
- Java+Selenium环境搭建
初学者---简单的selenium环境搭建: 1. 安装JAVA环境 2.下载eclipse 3.下载firefox (不要最高版本,容易出现selenium不兼容问题) 4. 下载selenium需 ...
- vue项目搭建步骤
https://blog.csdn.net/echo008/article/details/77099058 https://blog.csdn.net/echo008/article/details ...
- MySQL AUTO_INCREMENT 学习总结
之前有碰到过开发同事指出一张InnoDB表的自增列 AUTO_INCREMENT 值莫明的变大,由于这张表是通过mysqldump导出导入的. 问题排查: 1.首先,查看表表义的sql部分的 auto ...
- python数据结构-如何实现用户的历史记录功能
如何实现用户的历史记录功能 使用collections中的deque from collections import deque dq = deque([], 5) dq.append(1) dq.a ...