[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=& ...
随机推荐
- asp.net session锁导致ajax请求阻塞
问:为了可以顺序访问Session的状态值,Session是否提供了锁定机制?答:Session实现了Reader/Writer的锁机制:当页面对Session具有可写功能(即页面有<%@Pag ...
- juqery 回车事件 回车操作 回车搜索
html <form class="search_wrap" method="post" action=""> <div ...
- javascript的数组之from()
Array.from()方法从一个类似数组或可迭代对象中创建一个新的数组实例. const arr = [1, 2, 3]; Array.from(arr); //[1, 2, 3] Array.fr ...
- Ubuntu 16.04 Java8 安装
添加ppa apt-get update apt install software-properties-common add-apt-repository ppa:webupd8team/java ...
- vsCode如何从github拉取项目
最近刚使用vscode,有些操作还不太会,所以记录下. 1.开vscode使用CTRL+`或者点击查看到集成终端打开控制终端. 2.在终端中cd到存放文件夹下面,然后git clone https:/ ...
- 外星人入侵——安装Pygame
本文以win10和Python3为例来介绍如何安装Pygame. 安装Pygame需要使用pip,我们首先检查pip是否已被安装. 打开一个终端窗口,并执行如下命令 C:\Users\hys>p ...
- mysql报错Ignoring the redo log due to missing MLOG_CHECKPOINT between
mysql报错Ignoring the redo log due to missing MLOG_CHECKPOINT between mysql版本:5.7.19 系统版本:centos7.3 由于 ...
- python框架之Django(8)-CBV中添加装饰器
现有如下检查登录装饰器: from functools import wraps def check_login(func): @wraps(func) def inner(request, *arg ...
- python之SQLAlchemy组件
介绍 SQLAlchemy 是一个 ORM 框架,可以帮助我们使用面向对象的方式快速实现数据库操作. 组成部分: Engine,框架的引擎 Connection Pooling ,数据库连接池 Dia ...
- OrbSLAM2采集点云数据
因为条件限制,在Windows10平台下实现OrbSLAM2+Kinect2点云数据采集. 1. 遇到问题,启动运行没多久就跟丢了,有的地方哪怕轻微的旋转甚至不动都无法跟踪. 原因:相机的标定参数不对 ...