先上效果图。

在用之前呢,你得先更新最新版的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. idea每次换行后光标都跑到最左边问题

    最进用idea时发现每次换行之后一段时间光标会自动跑到最左边,默认把我的首行空格删掉了 IDEA版本为:IntelliJ IDEA 2020.2.3 x64

  2. Windows LDAP加固之LDAP over SSL和通道绑定

    很多网络通信都可以用SSL来加密的,LDAP也不列外,同样可以用SSL加密. LDAPS使用的证书必须满足以下几个条件: 1.证书的增强性密钥用法中必须有服务器身份验证Server Authentic ...

  3. Logstash:使用Logstash将电子邮件导入到Elasticsearch

  4. Logstash:Email output plugin 检查日志中是否还有某些错误信息并发送邮件报警

  5. 使用docker-compose运行nginx容器挂载时遇到的文件/目录问题

    单独使用docker run命令指定挂载文件路径运行nginx容器是可以的,但是用在docker-compose中就不行了 报错如下: 原因就是挂载出错,不能直接挂载文件,还有挂载的容器里的目录要正确 ...

  6. MySQL数据库安装保姆教程及问题解决

    使用Mysql的zip压缩包解压版,下载之后需进行一定的配置,才能使用它. 下面对Mysql压缩包版的安装方法进行详细的描述,如有疑问或错误,望及时反馈. 首先,mysql的官方下载地址点我进行下载 ...

  7. Oracle基础知识汇总一

    Oracle基础知识 以下内容为本人的学习笔记,如需要转载,请声明原文链接   https://www.cnblogs.com/lyh1024/p/16720759.html oracle工具: SQ ...

  8. CAN随机度测试

    在车联网安全测试场景中必不可少的就是对于CAN总线的测试,而CAN总线测试中27服务又是一项必不可少的测试! 当我们进入编程会话请求种子后必定会对种子进行破解,当种子随机度足够安全时就会加大破解难度. ...

  9. Maven中POM文件总体配置说明

    POM文件总体配置说明 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://w ...

  10. Docker | redis集群部署实战

    前面已经简单熟悉过redis的下载安装使用,今天接着部署redis集群(cluster),简单体会一下redis集群的高可用特性. 环境准备 Redis是C语言开发,安装Redis需要先将Redis的 ...