[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=& ...
随机推荐
- 让ADO.NET Entity Framework支持Oracle数据库
Oracle最近发布了 Oracle Data Access Component(ODAC)11. 2 Rel 4,其中增加了对 Entity Framework 4.1 和4.2的支持.这让 .NE ...
- SQL语句精简版
select US.QQ,US.tel,US.username,SC.EnglishScore,SC.MathScorefrom Userinfor US right join Score SC on ...
- 01day
01 cpu 内存 硬盘 操作系统 CPU:中央处理器,相当于人大脑. (运行速度飞机) 内存:临时存储数据. 8g,16g, (高铁) 1,成本高. 2,断电即消 ...
- ZOJ 4060 - Flippy Sequence - [思维题][2018 ACM-ICPC Asia Qingdao Regional Problem C]
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4060 题意: 给出两个 $0,1$ 字符串 $S,T$,现在你有 ...
- Luogu 1068 - 分数线划定 - [快速排序]
题目链接:https://www.luogu.org/problemnew/show/P1068 题目描述世博会志愿者的选拔工作正在 A 市如火如荼的进行.为了选拔最合适的人才,A 市对所有报名的选手 ...
- RNN Train和Test Mismatch
李宏毅深度学习 https://www.bilibili.com/video/av9770302/?p=8 在看RNN的时候,你是不是也会觉得有些奇怪, Train的过程中, 是把训练集中的结果作为下 ...
- 好用的 over the wall教程
还在为翻 xxx墙苦恼吗,一分钟就能搞定的翻xxx墙教程 1.下载chrome扩展插件 Proxy SwitchyOmega,加入到谷歌的高级扩展程序当中,这个就不详细讲解了. 请戳 https:// ...
- 《Mysql 分区分表》
一:分区/分表 为了什么? - 当MySQL单表的数据量过大时,数据库的访问速度会下降,需要处理大量数据,所以需要把数据分散存储. - 常用 "水平" 切分 二:MySQL常见的水 ...
- javaweb(2)之Servlet入门
Hello Servlet 方式一 1.新建 web 工程,编写一个类,实现 javax.servlet.Servlet 接口: package com.zze.servlet; import jav ...
- chrome下调试安卓app 之 ionic
打开chrome浏览器,输入chrome://inspect/#devices,将安卓手机插入电脑上,打开手机设置 打开 开发者调试usb调试 ,网页上会出现 input 点击, 就会看见consol ...