Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >thinkPHP利用ajax异步上传图片并显示、删除的示例

thinkPHP利用ajax异步上传图片并显示、删除的示例

作者头像
子润先生
修改于 2021-07-13 03:44:16
修改于 2021-07-13 03:44:16
1.6K0
举报

近来学习tp5的过程中,项目中有个发帖功能,选择主题图片。如下:

利用原始的文件上传处理,虽然通过原始js语句能实时显示上传图片,但是这样的话会涉及很多兼容问题。使用ajax技术,实现选择性删除所选图片功能,并不会有兼容问题。

表单文件form:

<form method="post" enctype="multipart/form-data">

<div style="margin: 20px 20px 20px 10px;">

主题图片:

<span id="img-list-box" style="margin-left: 25px;"></span>

<span style="display:inline-block;height: 30px;position: relative;top:0px;left:0px;">

<a style="display: inline-block;width: 100px;height:30px;line-height: 30px;text-align:center;background: #F60;color: #FFF;">图片上传</a>

<input type="file" name="img_src" style="width: 100px;border: 1px solid red;position: absolute;top:0px;left: 0px;height: 30px;opacity: 0;" id="up-img-file" onchange="upimg(this)">

</span>

</div>

</form>

需要发送Ajax请求的话,当然表单是不能实现我们的需求的,因此,我们需要给表单关联一个单击事件去帮我们进行Ajax请求并选择图片。

当我们点击上传图片这个button按钮时触发选择图片实现Ajax上传

JavaScript代码:

<script type="text/javascript" src="__STATIC__/home/js/jquery.min.js"></script>

<script type="text/javascript">

function upimg(obj)

{

if( obj.value == "" ) {

return;

}

var /

/formdata = new FormData();

//<input type="file" name="img" value="" />

formdata.append("img" , $(obj)[0].files[0]);//获取文件法二

$.ajax({

type : 'post',

url : '/home/note/upimg', //接口

data : formdata,

cache : false,

processData : false, // 不处理发送的数据,因为data值是Formdata对象,不需要对数据做处理

contentType : false, // 不设置Content-type请求头

success : function(response){

console.log(response);

var html = '<div style="position: relative;margin-right: 20px;margin-bottom: 15px;width: 132px;display: inline-block;border: 1px solid #CCC;background:#EEE;">'

+'<span style="display: block;width: 120px;height: 80px;border: 1px solid #F2F1F0;margin: 5px;overflow: hidden;">'

+'<img src="'+response+'" style="width: 100%;" />'

+'</span>'

+'<input type="hidden" name="imgs[]" value="'+response+'" />'

+'<a onclick="delImg(this);" style="z-index: 10;display/

/: block;top: -8px;cursor:pointer;right: -8px;position:absolute;width: 20px;height: 20px;background: #CCC;border-radius:100%;text-align:center;line-height: 20px;border: 1px solid #C1C1C1;color: #555;">X</a>'

+'</div>';

$('#img-list-box').append(html);

},

error : function(){ }

});

}

function delImg(obj)

{

$(obj).parent('div').remove();

}

</script>

点击选择图片之后就是交给服务器端处理了。

php接口文件:

public function upimg()

{

//验证

$file = request()->file('img');

// 移动到框架应用根目录/public/uploads/ 目录下

if($file){

$info = $file->move(ROOT_PATH . 'public' . DS . 'uploads');

if($info){

// 成功上传后 获取上传信息

$img_src = '/uploads/'.$info->getSaveName();

echo $img_src; //返回ajax请求

}else{

// 上传失败获取错误信息

$this-&gt;error($file->getError());

}

}

}

改善后的效果图:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Vue项目图片剪切上传——vue-cropper的使用
最近自己在研究vue,然后做了一个小型的后台管理系统用来练手,开发过程中,想到了剪切图片上传用户头像的需求。上网百度了一番,发现好多用的都是vue-cropper。我也就用了,个人感觉还是挺好用的。现在在这里用一个简单的小demo演示一下vue-cropper的使用方法。
用户1174387
2018/08/01
3.5K0
Vue项目图片剪切上传——vue-cropper的使用
PHP+ajax实现上传、删除、修改单张图片及后台处理逻辑操作详解
本文实例讲述了PHP+ajax实现上传、删除、修改单张图片及后台处理逻辑操作。分享给大家供大家参考,具体如下:
用户8664418
2021/07/13
1.4K0
自定义按钮~自适应布局~常见bug
一、元件 自定义按钮 可用button或a   display为 inline-block 方便设置格式,通过 padding,height,line-height,font-size设置按钮的大小 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>BUTTON</title> 5 <meta charset="utf-8"> 6 <style type="text/css"> 7 a { 8
超然
2018/08/03
1.3K0
HTML+CSS美食静态网页设计
1、首先,新建一个文件,名字可以随便取,我这里的文件名叫:爱尚美食网页。在 爱尚美食网页 文件夹里面还需要有一个 css文件夹,一个images文件夹,和一个index.html文件。如下图所示:
全栈程序员站长
2022/11/09
3.2K0
HTML+CSS美食静态网页设计
前端插件——头像截图上传插件的使用(带后台)
效果图:实现上传头像,右边是预览,有三个大小,可以对头像进行裁剪 HTML: toParentData 和 img 返回的是图片裁剪后的base64编码。其中toParentData用于业务需求,可以
生活创客
2018/01/30
3.5K0
前端插件——头像截图上传插件的使用(带后台)
个人信息页面网页
HTML代码如下: <!DOCTYPE HTML> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <title>个人信息页面</title> <link href="css/personal
王凡汎
2020/04/22
3.9K0
《Ajax科普入门》用Ajax写个经典影视台词网易云评论无限滚动
为了让提升用户体验,微软在IE5中引入了XMLHttpRequest, 简称XHR,XMLHttpRequest的出现,可以让网页无需刷新,即可从服务器获取最新的内容,这项技术也就是所谓的Ajax
zhaoolee
2021/12/07
1.2K0
《Ajax科普入门》用Ajax写个经典影视台词网易云评论无限滚动
欠的债,这一次都还给你们
  前段时间,写的一篇关于博客园主题皮肤分享的文章,一经发出便受到了极大的热捧,后来很多网友留言说,想要让我分享现在的模板,毕竟现在这个模板已经比之前分享的那个多经历了N多个版本的改进和优化。那本文我就来分享我博客园中的所有的特性,以供大家直接开箱即用。废话不多说,直接开搞~
阿豪聊干货
2018/08/09
7050
欠的债,这一次都还给你们
原生js实现图片单张上传及批量上传
<meta name="viewport" content="width=device-width, initial-scale=1.0">
马克社区
2022/07/19
7.6K0
原生js实现图片单张上传及批量上传
手机端调用系统相册并上传图片
css: 1 .upload-img{ 2 width:80%; 3 position:fixed; 4 top:50%; 5 left:50%; 6 margin-left:-40%; 7 #fff; 8 border-radius: 10px; 9 z-index:1000; 10 display:none; 11 } 12 .upload-img>p:first-child{ 13 height:50px
蓓蕾心晴
2018/04/12
2K0
CSS 特征布局实例 - 导航栏、新闻列表、淘宝布局
重点:这里不能使用float:left的方式,因为这种方式不方便于居中。如果使用偏移的方式居中,当页数增加的时候,可能就不居中了。
Devops海洋的渔夫
2019/06/02
2K0
bootstrap+jquery实现图片选取后本地预览+增删+表单ajax上传(完整demo)
运行效果截图—支持再次选择和删除不要的图片,图片预览效果的图片数据是本地的,不需要上传就可以预览
超级小可爱
2024/04/26
3990
bootstrap+jquery实现图片选取后本地预览+增删+表单ajax上传(完整demo)
伪类以及伪元素的一些使用小技巧
练小习
2017/12/29
9990
javascript多图片上传imgFileupload
<html lang="en"><head> <meta charset="UTF-8"> <title>Document</title> <style> *{ margin:0;padding:0; } html,body{ font-family:Arial,Helvetica,
matinal
2020/11/27
9430
WordPress动漫图片主题cxudy模板代码
WordPress多功能CX-UDY图片主题是基于wordpress开源程序开发的简洁时常自适应图片模板,适用于各种图片写真类型、图片壁纸类、博客站、多媒体分享站等类型站点。图片主题效果演示http://m.bokequ.com/dongman/gc
博客趣
2024/02/14
4250
WordPress动漫图片主题cxudy模板代码
响应式动漫音乐/个人博客杂志主题FM模板
国漫FM主题V1.8是以Ajax加以CSS动画的方式,很好的将优雅的设计感和极度精简的代码同时表现了出来,进而缔造出这样一款十分经典的名为Always for you的WordPress博客主题。正如作者自己所言:如果你想让你的WordPress博客看起来个性十足。FM主题为响应式格子布局(瀑布流),是一款集音乐、杂志、图片、个人博客等内容的wordpress动漫主题,显示地址http://m.bokequ.com/guoman/music
博客趣
2024/05/02
1540
响应式动漫音乐/个人博客杂志主题FM模板
vue上传图片并预览
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/148359.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/02
4K0
原生js使用FormData上传文件并监听进度(附前后端实现源码)
本文代码及相关素材已经托管到Github仓库, 永久下载地址https://github.com/zhaoolee/Blog/tree/master/form_data_upload_file
zhaoolee
2019/06/14
4.3K0
原生js使用FormData上传文件并监听进度(附前后端实现源码)
WordPress网站B2主题会员展示模块
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
小狐狸说事
2022/11/17
1.1K0
WordPress网站B2主题会员展示模块
实现元素居中的 10 个CSS方法
如果元素的宽度和高度已知,我们可以使用至少 3 种方法来使元素居中。例如,在下图中,小猫的宽度和高度分别为 “500px” 和 “366px” 。我们应该如何居中?
唐志远
2022/10/27
4800
实现元素居中的 10 个CSS方法
推荐阅读
相关推荐
Vue项目图片剪切上传——vue-cropper的使用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档