先上效果图。

在用之前呢,你得先更新最新版的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的图片上传使用的更多相关文章

  1. .net mvc + layui做图片上传(二)—— 使用流上传和下载图片

    摘要:上篇文章写到一种上传图片的方法,其中提到那种方法的局限性,就是上传的文件只能保存在本项目目录下,在其他目录中访问不到该文件.这与浏览器的安全性机制有关,浏览器不允许用户用任意的路径访问服务器上的 ...

  2. .net mvc + layui做图片上传(一)

    图片上传和展示是互联网应用中比较常见的一个功能,最近做的一个门户网站项目就有多个需要上传图片的功能模块.关于这部分内容,本来功能不复杂,但后面做起来却还是出现了一些波折.因为缺乏经验,对几种图片上传的 ...

  3. .Net之Layui多图片上传

    前言: 多图上传在一些特殊的需求中我们经常会遇到,其实多图上传的原理大家都有各自的见解.对于Layui多图上传和我之前所说的通过js获取文本框中的文件数组遍历提交的原理一样,只不过是Layui中的up ...

  4. thinkphp5+layui多图片上传

    准备资料 下载layui <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  5. php+layui实现图片上传与预览

    端代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <titl ...

  6. layui 实现图片上传和预览

    [学习笔记] 图片不自动上传并在表单提交时再上传,看代码. 附上表单页面 前台实现 <#--图片名--><input id="fileName" type=&qu ...

  7. layui实现图片上传

    页面代码: <style> .uploadImgBtn2{ width: 120px; height: 92px; cursor: pointer; position: relative; ...

  8. layui框架图片上传至服务器

    注意:只可用于数据量较小的项目,数据量庞大的项目不要用这个,否则会造成图片数量庞大,至服务器运行速度变慢或瘫痪 HTML代码 //前端使用的是layui框架<div class="la ...

  9. ThinkPHP5+Layui实现图片上传加预览

    html代码 <div class="layui-upload"> <button type="button" class="lay ...

  10. layui 富文本 图片上传 后端PHP接口

    <!DOCTYPE html> <html> <head> <link rel="stylesheet" type="text/ ...

随机推荐

  1. KingbaseES 数据库静默安装

    关键字:KingbaseES.V8R6.Silent.Java 一.环境准备 1.硬件环境支持 金仓数据库管理系统KingbaseES支持X86.X86_64,同时支持龙芯.飞腾等国产CPU硬件体系结 ...

  2. Java SE 6、super关键字,包

    1.super关键字 super代表父类的引用,用于访问父类的属性,方法,构造器 super可以访问父类的属性,但不能访问父类的 private 属性 super.属性名; 可以访问父类的方法,不能访 ...

  3. 将 Docker Engine 节点从 dockershim 迁移到 cri-dockerd

    官网地址:https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/migrating-from-dockershim/migrate-doc ...

  4. MySQL 的七种日志总结

    文章转载自:https://mp.weixin.qq.com/s/ewv7HskHvH3O7kFyOmoqgw 一.MySQL 日志分类 日志类别 说明 备注 错误日志 错误日志记录了当MySQL启动 ...

  5. CentOS7使用yum方式安装Containerd

    # 安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的 yum install -y yum-utils device-m ...

  6. Centos7搭建 KVM 环境

    注意:使用KVM管理虚拟机分命令行和图形化界面两种方式,这里最后一步安装的工具是图形化管理工具 安装前准备 验证CPU是否支持KVM 如果结果中有vmx(Intel)或svm(AMD)字样,就说明CP ...

  7. 知识广度 vs 知识深度

  8. Kibana仪表盘(Dashboard)详解

    Kibana 仪表板(Dashboard) 展示保存的可视化结果集合. 在编辑模式下,您可以根据需要安排和调整可视化结果集,并保存仪表板,以便重新加载和共享. 创建一个仪表板 如何创建一个仪表板: 点 ...

  9. (Bug修复)C#爬虫,让你不再觉得神秘

    Bug修复 https://github.com/ZhangQueque/quewaner.Crawler/issues/1 修复加载Https网址中午乱码,导致Node解析失败的问题 1.使用第三方 ...

  10. PHP全栈开发(四): HTML 学习(2. div 布局)

    无序列表,有序列表,自定义列表 无序列表是ul表示,每个元素用li表示 有序列表是ol表示,每个元素用li表示 <ul> <li>首页</li><li> ...