首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >当我只上传一次时,图像在表中插入了两次

当我只上传一次时,图像在表中插入了两次
EN

Stack Overflow用户
提问于 2019-02-20 06:04:15
回答 2查看 63关注 0票数 3

这里我上传了两个代码,一个是Index.php,另一个是ImageUpload.php当我上传图像时,文件被移到uploads文件夹中,图像名称被两次存储在数据库中,我只想为我上传的每个图像在数据库中存储一个数据,这里是数据库

代码语言:javascript
运行
AI代码解释
复制
images | int(11)    
name   | varchar(200)   
image  | longtext



<?php
include("config.php");

if(isset($_POST) && !empty($_FILES['image']['name'])){
   $valid_extensions = array('jpeg', 'jpg', 'png','pdf','doc','docx'); // valid extensions
   $filepath = 'uploads/'; 
   if(!is_dir($filepath)){

      mkdir($filepath, 0755, true);
   }

   $img = $_FILES['image']['name'];
   $tmp = $_FILES['image']['tmp_name'];

   list($txt, $ext) = explode(".", $img); // alternative $ext = strtolower(pathinfo($img, PATHINFO_EXTENSION));

   $image_name = time().".".$ext;
   $image_base64 =md5(rand());
   $image = 'data:image/'.$image_name.';base64,'.$image_base64;

   $query = "insert into images(name,image) values('".$image_name."','".$image."')";
   mysqli_query($con,$query) or die(mysqli_error($con));

   // Validate File extension
   if(in_array($ext, $valid_extensions)) 
   { 
      $filepath=$filepath.$image_name;
      if(move_uploaded_file($tmp,$filepath)){
         echo "<img width='100px' src='".$filepath."'>";
      }else{
         echo "Failed to upload image on server";
      }
   }else 
   {
      echo 'Please upload valid image';
   }
}else{
   echo "Please select image to upload";
}

?>
代码语言:javascript
运行
AI代码解释
复制
<!DOCTYPE html>
<html>
<head>
    <title>PHP Ajax image upload without refreshing page with validation</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" >
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.js"></script> 
    <script src="http://malsup.github.com/jquery.form.js"></script> 
</head>
<body>

<div class="container">
  <div class="row">
   <div class="col-md-offset-2 col-md-8">
    <h2>PHP - Upload image on server with validation using jQuery Ajax</h2>
    <div class="panel panel-info">
      <div class="panel-heading">File upload using ajax in PHP</div>
      <div class="panel-body">

          <form action="imageUpload.php" enctype="multipart/form-data" class="form-horizontal" method="post">
            <div class="preview"></div>
            <input type="file" name="image" class="form-control" />
            <br/>
            <button class="btn btn-block btn-primary btn-upload" id="upload" name="upload">Upload</button>
          </form>
        </div>
        </div>
      </div>
    </div>
</div>

<script type="text/javascript">
    $(document).ready(function() {
        $(".btn-upload").click(function(){
            $(".form-horizontal").ajaxForm({target: '.preview'}).submit();
        });
    }); 
</script>


</body>
</html>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-20 06:21:24

这是因为您的ajax请求正在运行两次。只需在表单元素上添加onsubmit="return false;"即可。这样表单就只通过ajax代码提交。

代码语言:javascript
运行
AI代码解释
复制
<form action="imageUpload.php" enctype="multipart/form-data" class="form-horizontal" method="post" onsubmit="return false;">
  <div class="preview"></div>
  <input type="file" name="image" class="form-control" />
  <br/>
  <button class="btn btn-block btn-primary btn-upload" id="upload" name="upload">Upload</button>
</form>
票数 4
EN

Stack Overflow用户

发布于 2019-02-20 06:25:19

通过添加e.preventDefault();禁用默认行为(需要您将事件e作为参数传递给匿名函数。

代码语言:javascript
运行
AI代码解释
复制
$(".btn-upload").click(function(e) {
    e.preventDefault();
    $(".form-horizontal").ajaxForm({target: '.preview'}).submit();
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54779800

复制
相关文章
Parallax.js–自适应智能设备方向的视差引擎
今天大师兄给大家分享一款功能非常强大的javascript视觉差特效引擎插件:Parallax.js。
程序员老鱼
2022/12/02
1.7K0
滚动视差让你不相信“眼见为实”
视差滚动(Parallax Scrolling)是指让多层背景以不同的速度移动,形成立体的运动效果。
前端森林
2020/04/23
2.2K0
滚动视差让你不相信“眼见为实”
摄影机-跟随玩家并添加背景视差
在本节中,我们将了解任何游戏中的基本元素:相机。在大多数标志性的平台游戏中,如Mario,Metroid,Super Meat boy,相机的良好实现使整个游戏体验更加完美。
iOSDevLog
2019/03/11
1.3K0
CVPR 2019 | 国防科大提出双目超分辨算法,效果优异代码已开源
近日,来自国防科技大学等单位的学者提出了新型双目超分辨算法,充分利用了左右图的信息提升图像超分辨效果;
OpenCV学堂
2019/05/31
2.8K0
[先行者课程]--0312视差效果--课堂笔记
今天是3月12号,来学习一下视差滚动。 严格来讲,它其实是一种网页效果,而不是一个前端组件,顶多是一个插件。 插件,一般是用来实现网页上的一个或多个功能。 而组件,是为实现网页的业务逻辑,而封装的一组功能代码。它一般是特定的,不特别的强调通用性。 //============ 视差滚动(Parallax Scrolling) parallax[ˈpærəˌlæks] n. 视差(量),视差角度; 它是一种比较优雅酷炫的页面展示的方式, 今天咱们研究下视差滚动的原理和实现方式。 视差的原理, 视差就是从有一定
web前端教室
2018/02/06
9600
图像拼接--Parallax-tolerant Image Stitching
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhangjunhit/article/details/83054318
用户1148525
2019/05/27
1.5K0
npm依赖(类库工具)
写到最后总结得差不多了,后续如果我想起还有哪些类库工具遗漏的,会继续在这篇文章上补全,同时也希望各位倔友对文章里的要点进行补充或者提出自己的见解。欢迎在下方进行评论或补充喔,喜欢的点个赞或收个藏,保证你在开发时用得上。
JowayYoung
2020/04/01
2.4K0
Swiper实现全屏视觉差轮播
Swiper作为当代流行的js框架,非常受到青睐,这里演示swiper在pc端全屏视觉轮播的效果,这也是pc端常用的一种特性
用户3159471
2018/09/13
3.5K0
CSS | 视差滚动 | 笔记
image-20230720145639107css3中的坐标系,rotateX就是绕着x轴旋转,rotateY就是绕着Y轴旋转,rotateZ就是绕着z轴旋转(也就是xy平面的旋转)。 perspective属性用来设置视点,在css3的模型中,视点是在Z轴所在方向上的。 translateX,translateY表现出在屏幕中的上下左右移动,transformZ 的直观表现形式就是大小变化, 实质是 XY平面相对于视点的远近变化(说远近就一定会说到离什么参照物远或近,在这里参照物就是perspective属性)。 比如设置了 perspective 为 200px; 那么 transformZ 的值越接近 200,就是离的越近,看上去也就越大,超过200就看不到了, 因为相当于跑到后脑勺去了,你不可能看到自己的后脑勺。 (200-transformZ的值)就是视点和xy平面的距离(初始是屏幕的位置,此时transformZ的值为0)。
yiyun
2023/07/24
8660
CSS | 视差滚动 | 笔记
利用OpenCV建立视差图像
我们都看过3D电影,他们看起来都很酷,这给了我们一个想法,使用一些工具通过改变看图像视角,模拟观众的头部移动。
小白学视觉
2021/01/20
1.1K0
Discuz解决帖子页面字体错位和大小变大
最近在新版2.0社区开发时,发现了一个很有意思的问题,字体文件会在一些情况下无法加载,所以就对着这个Bug开始着手解决,结果竟掏了360的底...
Yangsh888
2022/08/30
9560
8个有用的 CSS 技巧:视差图像,sticky footer 等等
CSS是一种独特的语言。乍一看,这似乎很简单,但是,某些在理论上看起来很简单的效果在实践中往往不那么明显。
前端小智@大迁世界
2019/04/18
1.2K0
30个你应该在2022年里使用的JavaScript 动画库
英文 | https://javascript.plainenglish.io/30-javascript-animation-libraries-for-2022-db33a472e02d
winty
2022/02/18
3.4K0
【React+Typescript+Antd】页面内局部路由跳转
因为首页有导航,有页头、页尾这些固定的布局,而内容板块可以随导航而变动。这时候全局路由已经不能满足页面局部刷新的需求。
毛大姑娘
2020/09/10
3.6K0
滚动视差?CSS 不在话下
视差滚动(Parallax Scrolling)是指让多层背景以不同的速度移动,形成立体的运动效果,带来非常出色的视觉体验。 作为网页设计的热点趋势,越来越多的网站应用了这项技术。
Sb_Coco
2018/08/10
2K0
React-Router 5.0 制作导航栏+页面参数传递
使用React构建SPA应用(单页面应用),要想实现页面间的跳转,首先想到的就是使用路由。在React中,常用的有两个包可以实现这个需求,那就是react-router和react-router-dom。本文主要针对react-router-dom进行说明。
憧憬博客
2020/07/21
3.5K0
前端组件库_前端组件库有什么好处
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/168343.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/20
6.4K0
那些前端常用的网站插件
这套工具集中的大部分你可能见过,也可能没见过,如果有哪个/些让你眼前一亮,那么我的分享就很值了。 这个列表包含许多种类的资源,所以这里我将它们分组整理。 Javascript 库 Particles.js — 一个用来在 web 中创建炫酷的浮动粒子的库 Three.js — 一个用来在 web 中创建 3d 物体和 3d 空间的库 Fullpage.js— 快速实现全屏滚动特性 Typed.js — 打字机效果 Waypoints.js — 滚动到某个元素位置时触发一个功能 Highlight.js 
企鹅号小编
2018/01/30
4.5K0
那些前端常用的网站插件
Flutter布局基础——页面导航和返回
说到导航,最常见就是类似于iOS中导航控制器的push和pop效果,同样Flutter中也有类似的效果,使用的就是Navigator组件。
莫空9081
2021/08/02
1.6K0
2019年最全的web前端知识体系汇总
· HTML: https://developer.mozilla.org/zh-CN/docs/Web/HTML
用户5827212
2019/07/27
2.8K0

相似问题

parallax.js视差-滑块视差内容和图像

137

在parallax.js中更改视差图像

12

Parallax页面中的CSS导航栏

10

当我点击导航菜单时滚动页面视差(视差滚动)

22

单击链接时导航到不同的页面

22
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文