方法一:from表单

html

设置form表单,内包含头像预览div,内包含上传文件input

设置iframe用来调用函数传参路径

        <!--表单提交成功后不跳转处理页面,而是将处理数据返回给iframe框架,用target属性,属性值为框架的name-->
<form id="form1" action="chuli.php" method="post" enctype="multipart/form-data" target="sc">
<!--头像显示位置-->
<div id="show">
<!--删除了提交按钮,设置当路径改变时执行表单提交,脚本语句可以直接写在函数后-->
<!--文件上传设为透明,充满整个div,使得点击头像框时可以执行浏览图片-->
<input type="file" id="file" name="file" onchange="$('#form1').submit();"/>
</div>
</form> <!--框架-->
<iframe id="sc" name="sc"></iframe>

js

    function showImage(path){
$('#show').css('background-image','url('+path+')');
}
//onchange后面的调用函数
// function aa(){
// $('#form1').submit();
// }

php

    //文件名
$name = $_FILES['file']['name'];
//文件类型
$type = $_FILES['file']['type'];
//临时路径
$tmp_name = $_FILES['file']['tmp_name'];
//错误代码
$error = $_FILES['file']['error'];
//文件大小
$size = $_FILES['file']['size'];
//如果文件名不为空则向下判断
if(!empty($name)){
//如果错误等于0 则没有错误,往下判断
if($error == 0){
//文件类型为图片时
if($type == 'image/png'){
//文件大小小于100000b
if($size <=100000){
//如果不存在文件夹upfile
if(!is_dir("./image/")){
//创建文件夹upfile
mkdir("./image/");
}
//定义时间戳
$time = time();
//文件路径设置为
$path = "./image/".$time.$name;
//如果文件移动成功
if(move_uploaded_file($tmp_name,$path)){
//返回给页面的数据
//因为iframe为页面的子元素,所以.parent为页面,.showImage为其中的函数,$path为传参路径
echo "<script>window.parent.showImage('{$path}')</script>";
}else{
echo'上传失败';
}
//否则则输出文件过大
}else{
echo'文件过大';
}
//若不是图片则输出格式不对
}else{
echo'文件格式不对';
}
//错误代号,输出各种错误意思。
}else{
switch($error){
case '1':
echo '上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值';
break;
case '2':
echo '传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。';
break;
case '3':
echo '文件只有部分被上传';
break;
case '4':
echo '没有文件被上传';
break; }
}
//文件名为空,则输出文件为空
}else{
echo '文件为空';
}

方法二:ajax

html

        <!--头像框,设置宽高,背景图,背景大小100%-->
<div id="showing">
<!--上传文件,设置宽高100%,透明-->
<input type="file" id="file" name="file" onchange="upload()" />
</div>
<!--<input type="button" value="上传" onclick="upload()" />-->

js

    function upload(){
//拿到文件名
var path = $('#file').val();
//如果文件名中的换行空格等,为空则提示要选择文件
if($.trim(path) == ""){
alert('请选择要选择的文件');
return;
}
$.ajaxFileUpload({
url:'chuli.php',
type:'post',
secureuri:false,//是否启用安全提交,默认false
fileElementId:'file',//上传文件的id,name属性名
dataType:'text',
data:{},
success:function(data){//console.log(data);
$('#showing').css('background-image','url('+data+')');
}
});
}

php与上面相同,只是返回值只为文件路径。

    $name = $_FILES['file']['name'];
$type = $_FILES['file']['type'];
$tmp_name = $_FILES['file']['tmp_name'];
$error = $_FILES['file']['error'];
$size = $_FILES['file']['size'];
if(!empty($name)){
if($error == 0){
if($type == 'image/png'){
if($size <=100000){
if(!is_dir("./image/")){
mkdir("./image/");
}
$time = time();
$path = "./image/".$time.$name;
if(move_uploaded_file($tmp_name,$path)){
echo $path;
}else{
echo'上传失败';
}
}
}
}
}

trim() 函数移除字符串两侧的空白字符或其他预定义字符。

  • "\0" - NULL
  • "\t" - 制表符
  • "\n" - 换行
  • "\x0B" - 垂直制表符
  • "\r" - 回车
  • " " - 空格

头像文件上传 方法一:from表单 方法二:ajax的更多相关文章

  1. Spring MVC 文件上传、Restful、表单校验框架

    目录 文件上传 Restful Restful 简介 Rest 行为常用约定方式 Restful开发入门 表单校验框架 表单校验框架介绍 快速入门 多规则校验 嵌套校验 分组校验 综合案例 实用校验范 ...

  2. [原创]java WEB学习笔记49:文件上传基础,基于表单的文件上传,使用fileuoload 组件

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  3. js文件上传原理(form表单 ,FormData + XHR2 + FileReader + canvas)

    目录 form表单上传 FormData + XHR2 + FileReader + canvas 无刷新本地预览压缩上传实例 目前实现上传的方式 浏览器小于等于IE9(低版本浏览器)使用下面的方式实 ...

  4. angularjs 文件上传 如何绑定file表单的change?

    ng-change 会失灵 , 唯一的解决方式 是 onchange="angular.element(this).scope().fileNameChanged()"然后利用 n ...

  5. jqm文件上传,上传图片,jqm的表单操作,jqm的ajax的使用,jqm文件操作大全,文件操作demo

    近期在论坛中看到.在使用html5中上传图片或文件,出现各种问题. 这一方面,我也一直没有做过,今天就抽出了一点时间来学习一下.如今的演示样例已经ok了,我就给大家分享一下,希望对大家有帮助. 好吧. ...

  6. SmartUpload实现文件上传时file和表单文本同时提交的问题

    JSP页面: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8 ...

  7. 八 SpringMVC文件上传,必须设置表单提交为post

    1 修改Tomcat配置,本地目录映射 那么在server.xml中体现为: 测试一下是否设置成功: 2 引入jia包   3 配置多媒体解析器 3 jsp开启图片上传 4 Controller层设置 ...

  8. 将本地文件上传到指定的服务器(HttpWebRequest方法)

    将本地文件上传到指定的服务器(HttpWebRequest方法),通过文件流,带文件名,同文件一同上传的表单文本域及值. ///<summary> /// 将本地文件上传到指定的服务器(H ...

  9. 项目总结07:JS图片的上传预览和表单提交(FileReader()方法)

    JS图片的上传预览和表单提交(FileReader()方法) 一开始没有搞明白下面这块代码的,今天有时间简单整理下 核心点:FileReader()方法 以下是代码(以JSP文件为例) <!DO ...

随机推荐

  1. 2.Matlab数值数组及其运算

    2.1引导 2.2一维数组的创建与寻访 2.3二维数组的创建 2.4二维数组元素的标识 2.5二维数组的子数组寻访和赋值 2.6执行数组运算的常用函数 2.7数组运算和矩阵运算 2.8多项式的表达和创 ...

  2. Java高级——交通灯管理系统

    本方法模拟了现实生活中的交通信号灯的情况 1.先构建Road类,此类可以创建12个方向的路 代码如下: package com.springtie.traffic; import java.util. ...

  3. JavaScript DOM编程艺术(第2版)学习笔记1(1~4章)

    第一章 一些基本概念 HTML(超文本标记语言),构建网页的静态结构,由一系列的DOM组成: CSS(层叠样式表),给网页各部分结构添加样式: JavaScript,通过获取DOM给静态结构加上动作, ...

  4. Unity坐标系 左手坐标系 图

    x轴:从左指向右 y轴:从下指向上 z轴:指向屏幕里的是左手坐标系,指向屏幕外的是右手坐标系 记忆小技巧:都是X轴朝右,Y轴向上,跟平时画坐标一模一样,区别只是Z的朝向.你用手试一下就知道了,当大拇指 ...

  5. 使用tf.ConfigProto()配置Session运行参数和GPU设备指定

    参考链接:https://blog.csdn.net/dcrmg/article/details/79091941 tf.ConfigProto()函数用在创建session的时候,用来对sessio ...

  6. php读写excel —— PhpSpreadsheet组件

    前言 PhpSpreadsheet是一个纯PHP类库,它提供了一组类,允许您从不同的电子表格文件格式(如Excel和LibreOffice Calc)读取和写入.用PHP读取Excel.CSV文件 还 ...

  7. JS中的DOM操作怎样添加、移除、移动、复制、创建和查找节点

    DOM操作怎样添加.移除.移动.复制.创建和查找节点? (1)创建新节点 createDocumentFragment() //创建一个DOM片段 createElement() //创建一个具体的元 ...

  8. thinkPHP的Excel插件

    原文地址 http://www.thinkphp.cn/topic/14005.html 总结的注意事项 1实例化第三方类,要在类名前加\ ,不然引用地址不对. 实现步骤:一:在http://phpe ...

  9. array_combine php一个比较偏门的数组函数

    这函数  返回数组1的值 当做key,把数组2的值当做value,   当查询数据库用了 group +GROUP_CONCAT 两个组合时,(例如查询某个班级的,用户名,用户id,返回的是字符串,打 ...

  10. fensorflow 安装报错 DEPENDENCY ERROR

    1.错误信息 DEPENDENCY ERROR The target you are trying to run requires an OpenSSL implementation. Your sy ...