layui的图片上传使用
先上效果图。

在用之前呢,你得先更新最新版的layui版本。经验之谈_(:_」∠)_
今天在用的时候,实在是碰到太多的坑,本来是拒绝更新到最新版来着。
首先是layui.js和layui.all.js的问题。这个是什么问题呢!就是layui.js没有upload.render方法
_(:_」∠)_ _(:_」∠)_ _(:_」∠)_
于是就在百度搜索了:“layui.js is not found reder” 有答案说用layui.all.js
然后引用layui.all.js,而layui.all.js有render方法却不会触发<input type=file的上传功能。(吐血一波)( ̄ー ̄)
然后走神了下百度了 “layui.js和layui.all.js的区别” ,然后也不知道怎么回事,反正莫名其妙好了。
好的,那么我就继续往下。上传之后图片不预览出来。这是自己傻逼,被搞懵了,只是一个layuihide样式没删掉,又吐血一波(楼主最近补血嫌血多,多糖铁复合胶囊、生血宁片,你值得拥有)
就这么用了测试几回后.......打开windows的upload功能(其实就是<input type=file>打开的那个弹窗)没用了,回想起来可能是缓存还是怎么滴吧。哎呀,反正也不写废话了,中间的波折也就过了。
好,一个上午就这么没了。
下午上班,更新了最新版后。导入layui.js和 layui/lay/modules/upload.js(我也忘记有没有用了,反正就导了)完美,不会出现上午的问题了。人呐就是这么傻,能简单解决的非得找原因解决。
接下来是编写后台、写样式、js调试、添加删除按钮以及删除功能。layui图片上传是没用删除按钮的,除非是表格式的,不过区别也不大,只是不太好看。
编写传到mvc控制器的后台,emm
public class UploadFileController : MvcControllerBase
{
public ActionResult UploadImg() {
string resultUrl = "";
for (int i = 0; i < Request.Files.Count; i++)
{ resultUrl += Upload(Request.Files[i]);
if (i<Request.Files.Count-1)
{
resultUrl += ",";
}
}
return Success("上传成功", resultUrl);
} private string Upload(HttpPostedFileBase postedFile) {
UploadFiles uf = new UploadFiles();
string filepath = "images\\Goods\\";
string path = GetMapPath(filepath);//UploadFile/images/goods/
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
var filelength = postedFile.ContentLength;
string fileExt = GetPostfixStr(postedFile.FileName);
var fileMaxSize = 307200; //300K
var fileName = Guid.NewGuid() + "." + fileExt; //返回的上传后的文件名
string resultUrl = Config.GetValue("ServerIpHost") + "/UploadFile/images/Goods/" + fileName;//存入数据库的链接
if (filelength <= fileMaxSize)
{
byte[] buffer = new byte[filelength];
postedFile.InputStream.Read(buffer, 0, filelength);
postedFile.SaveAs(path + fileName);
}
return resultUrl; }
/// <summary>
/// 获取文件格式名
/// </summary>
/// <param name="filename"></param>
/// <returns></returns>
private string GetPostfixStr(string filename)
{
int start = filename.LastIndexOf(".");
int length = filename.Length;
string postfix = filename.Substring(start + 1);
return postfix;
}
public string GetMapPath(string strPath)
{
if (System.Web.HttpContext.Current != null)
{
return System.Web.HttpContext.Current.Server.MapPath(strPath);
}
else //非web程序引用
{
strPath = strPath.Replace("/", "\\");
if (strPath.StartsWith("\\"))
{
strPath = strPath.Substring(strPath.IndexOf('\\', 1)).TrimStart('\\');
}
return System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, strPath);
}
}
}
写了两个图片上传,一个是多图,一个是单图
layui.use(['form', 'upload', 'element'], function () {
var form = layui.form
, layer = layui.layer;
var upload = layui.upload;
var element = layui.element;
var $ = layui.jquery;
//拖拽上传
var uploadMain = upload.render({
elem: '#test10'
, url: '/UploadFile/UploadImg' //改成您自己的上传接口
//, before: function (obj) {//上传前触发
// //预读本地文件示例,不支持ie8
// obj.preview(function (index, file, result) {
// layui.$('#uploadDemoView').removeClass('layui-hide').find('img').attr('src', result);
// //$('#demo2').attr('src', result); //图片链接(base64)
// });
//}
, choose: function (obj) {//选择后触发
var files = this.files = obj.pushFile();
var view = layui.$('#uploadDemoView');
//预读本地文件示例,不支持ie8
obj.preview(function (index, file, result) {
var _html = $(['<div class="divimg" style="float:left;">'
, '<img style="max-width: 196px;max-height:200px" id="viewImg' + index + '" alt="上传成功后渲染" src="' + result + '">'
, '<div class="divX" >'
, '<img src = "/Content/images/ui_close.png" width = "20" height = "20" />'
, '</div>'
, '</div>'].join(''));
_html.find(".divX").on('click', function () {
delete files[index]; //删除对应的文件
_html.remove();
uploadDetail.config.elem.next()[0].value = '';
})
layui.$('#uploadDemoView').removeClass('layui-hide');
view.removeClass('layui-hide');
_html.find(".divX").on('click', function () {
delete files[index]; //删除对应的文件
_html.remove();
uploadDetail.config.elem.next()[0].value = '';
})
view.append(_html);
});
}
, auto: false//false将不触发before
//, bindAction: "#uploadBtn"
, size: 300//单位kb
, done: function (data) {
if (data.message != "") {
layer.msg(data.message);
}
if (data.type == 1) {
var fileUrl = data.resultdata;
$("input[name='mainPic']").val(fileUrl);
}
else if (data.type == 3) {
return false;
}
}
, progress: function (n, elem) {
var percent = n + '%' //获取进度百分比
element.progress('lodingdemo', percent); //可配合 layui 进度条元素使用
}
});
var uploadDetail;
//拖拽上传
uploadDetail = upload.render({
elem: '#upDiv2'
, url: '/UploadFile/UploadImg' //改成您自己的上传接口
, choose: function (obj) {//选择图片后触发
var files = this.files = obj.pushFile();//每次会把新图片加入集合
//-----------------图片数量限制
var filecount = Object.getOwnPropertyNames(files).length;//这里就不说,做图片数量限制
if (filecount > 4) {
layer.msg("只能上传4张");
var fileobj = Object.getOwnPropertyNames(files)//
$(fileobj).each(function (i, j) {//删除本次添加的图片,不删的话
if (i > 3) {
delete files[j];
}
})
return false;
}
//----------------------------
var view2 = layui.$('#uploadDemoView2');
//预读本地文件示例
obj.preview(function (index, file, result) {
var _html = $(['<div class="divimg" style="float:left;">'
, '<img style="max-width: 196px;max-height:200px" id="viewImg' + index + '" alt="上传成功后渲染" src="' + result + '">'
, '<div class="divX" >'
, '<img src = "/Content/images/ui_close.png" width = "20" height = "20" />'
, '</div>'
, '</div>'].join(''));
view2.removeClass('layui-hide');
_html.find(".divX").on('click', function () {
debugger;
delete files[index]; //删除对应的文件
_html.remove();
uploadDetail.config.elem.next()[0].value = '';
})
view2.append(_html);
});
}
, multiple: true
// , number: 4//这个是限制一次性选择4张图片 反正就不能用,没卵用
, auto: false//false将不触发before
, size: 300//单位kb
, done: function (data) {
if (data.message != "") {
layer.msg(data.message);
}
if (data.type == 1) {
var fileUrl = data.resultdata;
$("input[name='detailPic']").val(fileUrl);
}
else if (data.type == 3) {
return false;
}
}
//, error: function (index, upload) {
// //当上传失败时,你可以生成一个“重新上传”的按钮,点击该按钮时,执行 upload() 方法即可实现重新上传
//}
, progress: function (n, elem) {
var percent = n + '%' //获取进度百分比
element.progress('lodingdemo2', percent); //可配合 layui 进度条元素使用
}
});
$("#uploadBtn").click(function () {
uploadMain.upload();
uploadDetail.upload();
return false;
})
//自定义验证规则
//监听提交
//表单取值
});
<style type="text/css">
.divX {
position: absolute;
top: 0px;
right: 0px;
text-align: right;
padding-right: 3px;
z-index: 200;
-moz-border-radius: 20px;
-webkit-border-radius: 20px;
line-height: 10px;
font-weight: bold;
cursor: pointer;
font-size: 10px;
} .divimg {
max-height: 220px;
height: 220px;
width: 258px;
max-width: 258px;
background-color: #fff;
border: 1px dashed #e6e6e6;
position: relative;
text-align: center;
} .divimg > img {
padding-top: 10px;
}
</style>
<form class="layui-form layui-form-pane" lay-filter="example">
<input type="hidden" name="mainPic" />
<input type="hidden" name="detailPic" /> <div class="layui-form-item">
<button class="layui-btn layui-btn-normal layui-btn-radius" id="uploadBtn" lay-submit="">开始上传</button>
</div>
<div class="layui-form-item">
<fieldset class="layui-elem-field layui-field-title" style="margin-top: 30px;">
<legend>上传主图(300kb内)</legend>
</fieldset> <div class="layui-upload-drag" id="test10">
<div class="layui-progress" lay-filter="lodingdemo" lay-showpercent="true">
<div class="layui-progress-bar" lay-percent="0%"></div>
</div>
<i class="layui-icon"></i>
<p>点击上传,或将文件拖拽到此处</p>
<hr /> </div>
<div class="layui-hide" id="uploadDemoView">
@*<img style="max-width: 196px;max-height:200px" id="demo2" alt="上传成功后渲染" lay-filter="imgfilter" src="">
<div class="divX " onclick="del(this)">
<img src="~/Content/images/ui_close.png" width="20" height="20" />
</div>*@
</div>
</div>
<div class="layui-form-item">
<fieldset class="layui-elem-field layui-field-title" style="margin-top: 30px;">
<legend>上传详情页(300kb内,最多4张)</legend>
</fieldset> <div class="layui-upload-drag" id="upDiv2">
<div class="layui-progress" lay-filter="lodingdemo2" lay-showpercent="true">
<div class="layui-progress-bar" lay-percent="0%"></div>
</div>
<i class="layui-icon"></i>
<p>点击上传,或将文件拖拽到此处</p>
<hr>
</div>
<div class="layui-hide" id="uploadDemoView2">
</div>
</div>
</form>
layui的图片上传使用的更多相关文章
- .net mvc + layui做图片上传(二)—— 使用流上传和下载图片
摘要:上篇文章写到一种上传图片的方法,其中提到那种方法的局限性,就是上传的文件只能保存在本项目目录下,在其他目录中访问不到该文件.这与浏览器的安全性机制有关,浏览器不允许用户用任意的路径访问服务器上的 ...
- .net mvc + layui做图片上传(一)
图片上传和展示是互联网应用中比较常见的一个功能,最近做的一个门户网站项目就有多个需要上传图片的功能模块.关于这部分内容,本来功能不复杂,但后面做起来却还是出现了一些波折.因为缺乏经验,对几种图片上传的 ...
- .Net之Layui多图片上传
前言: 多图上传在一些特殊的需求中我们经常会遇到,其实多图上传的原理大家都有各自的见解.对于Layui多图上传和我之前所说的通过js获取文本框中的文件数组遍历提交的原理一样,只不过是Layui中的up ...
- thinkphp5+layui多图片上传
准备资料 下载layui <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...
- php+layui实现图片上传与预览
端代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <titl ...
- layui 实现图片上传和预览
[学习笔记] 图片不自动上传并在表单提交时再上传,看代码. 附上表单页面 前台实现 <#--图片名--><input id="fileName" type=&qu ...
- layui实现图片上传
页面代码: <style> .uploadImgBtn2{ width: 120px; height: 92px; cursor: pointer; position: relative; ...
- layui框架图片上传至服务器
注意:只可用于数据量较小的项目,数据量庞大的项目不要用这个,否则会造成图片数量庞大,至服务器运行速度变慢或瘫痪 HTML代码 //前端使用的是layui框架<div class="la ...
- ThinkPHP5+Layui实现图片上传加预览
html代码 <div class="layui-upload"> <button type="button" class="lay ...
- layui 富文本 图片上传 后端PHP接口
<!DOCTYPE html> <html> <head> <link rel="stylesheet" type="text/ ...
随机推荐
- IIS 实现http重定向https(亲测有效:解决URL重写模块配置https重定向不生效的问题)
前言 以前部署网站的时候,都是通过代码来实现http重定向https,最近在部署个人网站的时候,突发奇想可不可通过IIS来实现无代码的重定向呢? 在一番操作猛如虎的搜索引擎操作后,发现只有google ...
- springMVC配置时,静态资源和jsp文件路径没错但是访问时controller的请求报404错误。
springMVC配置时,静态资源和jsp文件路径没错但是访问时controller的请求报404错误. 1.场景 如果在web.xml中servlet-mapping的url-pattern设置的是 ...
- Java 多线程:锁(一)
Java 多线程:锁(一) 作者:Grey 原文地址: 博客园:Java 多线程:锁(一) CSDN:Java 多线程:锁(一) CAS 比较与交换的意思 举个例子,内存有个值是 3,如果用 Java ...
- Jenkins+Gitlab实现持续集成持续部署
一.GITLAB安装与使用 官网:https://about.gitlab.com/ 1.GITLAB安装要求 (1)中文文档地址 https://docs.gitlab.cn/jh/instal ...
- 第六章:Django 综合篇 - 10:消息框架 message
在网页应用中,我们经常需要在处理完表单或其它类型的用户输入后,显示一个通知信息给用户. 对于这个需求,Django提供了基于Cookie或者会话的消息框架messages,无论是匿名用户还是认证的用户 ...
- Kubernetes 上部署应用-- 以Wordpress 为例
用一个 Wordpress 示例来尽可能将前面的知识点串联起来,我们需要达到的目的是让 Wordpress 应用具有高可用.滚动更新的过程中不能中断服务.数据要持久化不能丢失.当应用负载太高的时候能够 ...
- 使用port-forward访问集群中的应用程序,以Redis 为例
为Redis创建Deployment和Service 创建 Redis Deployment,YAML文件如下: apiVersion: apps/v1 kind: Deployment metada ...
- 1_Html
一. 引言 1.1 HTML概念 网页, 是网站中的一个页面, 是构成网站的基本元素, 是承载各种网站应用的平台. 通俗的说, 网站就是由网页组成的, 通常我们看到的网页都是以html或html后缀结 ...
- 线段树学习笔记(基础&进阶)(一) | P3372 【模板】线段树 1 题解
什么是线段树 线段树是一棵二叉树,每个结点存储需维护的信息,一般用于处理区间最值.区间和等问题. 线段树的用处 对编号连续的一些点进行修改或者统计操作,修改和统计的复杂度都是 O(log n). 基础 ...
- vue禁用浏览器返回键
mounted () { // 禁用浏览器返回键 history.pushState(null, null, document.URL); window.addEventListener('popst ...