PHP文件域上传

PHP中使用文件域上传文件,需要几个步骤,首先先判断有无文件域,然后判断是否选择了文件,最后判断文件是否上传成功。

需要注意的是 表单中有文件域,必须将method设置为post, enctype设置为multipart/form-data

在文件上传时会给服务端以数组的形式返回几个值,如下:

    //array(5) {
    //  ["name"]=>
    //  string(25) "mmexport1534732827710.jpg"
    //  ["type"]=>
    //  string(10) "image/jpeg"
    //  ["tmp_name"]=>
    //  string(26) "C:\Windows\Temp\phpD9E.tmp"
    //  ["error"]=>
    //  int(0)
    //  ["size"]=>
    //  int(145606)
    //}

其中‘‘name"为上传文件名,"type"为上传文件类型,"tmp_name"为上传文件后所存放的路径,"error"为上传文件的错误问题,"size"为上传文件的大小。

具体代码如下:

<?php
function upload() {
    if (!(isset($_FILES[‘avatar‘]))) {
        //是否有文件域
        $GLOBALS[‘message‘] = ‘没有上传文件‘;
        return;
    }
    $avatar = $_FILES[‘avatar‘];
    var_dump($avatar);
    if ($avatar[‘error‘]!==UPLOAD_ERR_OK) {
        //服务端没有接受到上传的文件
         $GLOBALS[‘message‘] = ‘上传失败‘;
         return;
    }
    //接收到了文件
    //将文件从临时目录移动到网站范围内
    $source=$avatar[‘tmp_name‘];   //源文件路径
    $target=‘./uploads/‘ . $avatar[‘name‘];    //目标路径
    //==>./uploads/mmexport1534732827710.jpg
    $moved=move_uploaded_file($source, $target);
    if (!$moved) {
         $GLOBALS[‘message‘] = ‘上传失败‘;
         return;
    }
    //移动成功===>上传成功
     $GLOBALS[‘message‘] = ‘上传成功‘;

}
if ($_SERVER[‘REQUEST_METHOD‘]===‘POST‘) {
    //接受文件  使用一个 叫做$_FILES 超全局成员
    //var_dump($_FILES);
    upload();
}

 ?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文件域</title>
</head>
<body>
    <!-- 表单中有文件域,必须将method设置为post, enctype设置为multipart/form-data -->
    <!-- enctype 默认是urlencoded 格式   key1=value1&key2=value2 -->
    <form action="<?php echo $_SERVER[‘PHP_SELF‘]; ?>" method="post" enctype="multipart/form-data">
        <input type="file" name="avatar">
        <button>上传</button>
        <?php if (isset($message)): ?>
            <?php echo $message ?>
        <?php endif ?>
    </form>
</body>
</html>

原文地址:https://www.cnblogs.com/Yaucheun/p/10308804.html

时间: 2024-08-17 09:52:27

PHP文件域上传的相关文章

java_文件域上传

1.导包:commons-fileupload-1.2.2 & commons-io=2.0.1 2.设置上传的表单属性: <form action="dealUploadServlet" method="post" enctype="multipart/form-data"></form> 3.在dealUploadServlet进行处理: 3.1 FileItemFactory fac=new DiskItem

Js 跨域上传文件

代码在github上( https://github.com/andygithubchen/jsUpload ),请结合github上的文件阅读. 主要实现js跨域上传文件,这里的跨域目前只在两个域名所指向的服务器在同一局域网内. 当然,这两种方案都可以做同域名上传. 例如: 192.168.1.60 www.test.cn 192.168.1.61 www.video.cn 如果要在www.test.com域名下上传文件到www.video.com域名下,可以使用下面这两个方案: 方案一(在s

ie8、9跨域上传文件(图片)

前言:新的项目,需要将图片跨域上传到专门的图片服务器上面,而且还要支持ie8/9的跨域上传. 解决:为了解决这个方案踩了很多坑,特此记录.以前收集了一些上传的组件 文件(图片)上传组件 ,各有优劣. 1:因为google在将来的版本不在支持flash了,所以不想使用swf支撑的组件上传 2:尝试了AjaxFileUpload 组件,这个在google跨域直接挂掉了. 3:尝试百度的上传组件,Web Uploader 这个挺不错,支持跨域,但是ie8/9跨域支持不大好,只好放弃了(也有可能是我没有

Ueditor1.4.3实现跨域上传到独立文件服务器,完美解决单文件和多文件上传!

再写配置方法之前先吐槽一下网上的各种教程,TM没一个有卵用,一群傻屌不会写就别写,写了就要负责. 百度google搜了半天,全是配置什么document.domain,根域名什么的,我只想对你说: 好了,talk is cheap show me the code,言归正传: 首先去ue官网下载1.43版 .net版本,解压之后,把demo文件夹改成web,把net那个文件夹拷贝出来放到web外面,如图: 这样就把编辑器的静态文件和动态文件分离了,动态部分放到文件服务器上,静态部分集成到我们的网

h5 文件跨域上传

var imgUrl = "http://www.xxx.xxxxx.xxxx";$.ajax({ url:imgUrl, type: 'POST', crossDomain: true, jsonp: "jsoncallback", data: formData, contentType: false, //必须 processData: false, //不能用success,否则不执行 complete: function (data) { var data 

asp.net mvc 文件跨域上传,接收返回结果

在系统中我们可能有各种各样的文件上传,这样我们可能会把文件模块单独部署一台服务器,这样在上传时就会遇到跨域问题.我们可以先上传到服务端然后通过httpClient等技术再上传到文件服务器,这样就不会存在跨域问题,但是这样多出了服务器中转的一个步骤,现在我们说一下如何在客户端直接跨域上传到文件服务器. 1.文件服务器部署一个文件上传接口(实现技术:webapi,webservice,mvc等等) 文件上传接口示例如下(MVC方式): /// <summary> /// 上传接口 /// <

跨域上传文件(还是没有明白)

转: 最近工作中有这样的需求:项目在A机器(假设域名为www.a.com)上跑,资源文件要存储在专门的资源机器B(假设域名为www.b.com),要求在A上传文件到B上同时将上传信息以json格式返回. 由于之前的项目都比较小,也没有这样的需求,基本都是在单机上操作,自然涉及不到跨域的问题,初次遇到这个问题,比较棘手,进行了如下尝试均失败. 尝试一:在A机器上的页面中嵌入一个iframe,iframe的src指向B机器的一个上传页面,这样可以很容易将资源上传到B机器,但是却很难实现“以json格

HTML5 文件域+FileReader 分段读取文件并上传(七)-WebSocket

一.单文件上传实例 HTML: <div class="container"> <div class="panel panel-default"> <div class="panel-heading">分段读取文件:</div> <div class="panel-body"> <input type="file" id="file

文件的上传

上传: 1). 表单需要注意的 3 点 2). Struts2 的文件上传实际上使用的是 Commons FileUpload 组件, 所以需要导入 commons-fileupload-1.3.jarcommons-io-2.0.1.jar 3). Struts2 进行文件上传需要使用 FileUpload 拦截器 4). 基本的文件的上传: 直接在 Action 中定义如下 3 个属性, 并提供对应的 getter 和 setter //文件对应的 File 对象private File [