方法一: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. tabBar的图标不被系统渲染

    navi.tabBarItem.selectedImage = [[UIImage imageNamed:imageStr]imageWithRenderingMode:UIImageRenderin ...

  2. 一名3年工作经验的java程序员应该具备的技能

    一名3年工作经验的Java程序员应该具备的技能,这可能是Java程序员们比较关心的内容.我这里要说明一下,以下列举的内容不是都要会的东西—-但是如果你掌握得越多,最终能得到的评价.拿到的薪水势必也越高 ...

  3. 立即执行函数与Function

    js立即执行函数: (function ( ){})( ) 与 (function ( ){}( )) 与new Function()区别? new Function() 还是有区别的,fn = ne ...

  4. Android Studio配置GreenDAO 3.2.0和使用方法

    我相信,在平时的开发过程中,大家一定会或多或少地接触到SQLite.然而在使用它时,我们往往需要做许多额外的工作,像编写SQL语句与解析查询结果等.所以,适用于Android ORM框架也就孕育而生了 ...

  5. Android和Html的简单交互

    ---恢复内容开始--- 1.通过WebView加载Html界面.在android studio中html放在assets中. 但是默认的并不存在这个文件夹,创建过程是 2.创建后简单实现下,js调用 ...

  6. Django框架详解之url

    Django基本命令 下载Django pip3 install django 创建一个django project django-admin.py startproject cms 当前目录下会生成 ...

  7. CF949B A Leapfrog in the Array 思维题,推理

    题意: Dima是一名初级程序员. 在他的工作中,他经常不断地重复以下操作:从数组中删除每个第二个元素. 有一天,他对这个问题的解决方案感到厌倦,他提出了以下华丽的算法. 假设有一长度为2n的数组,最 ...

  8. anaconda3安装pytorch【window10】

    1.离线下载: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/win-64/ 在清华镜像软件站下载相应的版本,由于我之前安装了 ...

  9. 使用面向对象技术创建高级 Web 应用程序

    作者: 出处: 使用面向对象技术创建高级 Web 应用程序 来源:开源中国社区 作者:oschina 最近,我面试了一位具有5年Web应用开发经验的软件开发人员.她有4年半的JavaScript编程经 ...

  10. IDEA Maven Web项目 clone到本地导入到Eclipse中,启动服务器的时候会出现这个错误:SEVERE: Exception starting filter [hiddenHttpMethodFilter]

    背景(Background): 我将一个IDEA的maven web项目clone到本地,并导入到Eclipse中. I imported a MAVEN WEB project which was ...