Php 上传文件

文章描述了一个使用ThinkPhp框架进行文件上传的场景,特别是在index.html中创建了一个表单用于上传apk文件,利用iframe实现不跳转页面的提交。控制器部分检查上传文件是否为apk格式,并限制了上传文件的类型和大小。此外,还提到了需要对public目录赋予777权限以允许文件移动,以及调整php.ini配置以增大上传文件大小限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用的是ThinkPhp框架

  1. 在index.html中加入表单

<body>


    <form action="index/upload" method="post" enctype="multipart/form-data" target="frameName" >
        <label for="file">文件名:</label>
        <input type="file" name="file" id="file"><br>
        <input type="submit" name="submit" value="提交">
    </form>
    <iframe src="" width="200" height="200" frameborder="0" name="frameName" style="display:NONE" ></iframe>
</body>

这边的iframe是为了再点击上传后,不去跳转到别的页面,保持在当前页面。

  1. 在控制器中加入上传代码

限制了只能上传apk文件。

public function upload(){
        $allowedExts = array("apk");

        $temp = explode(".", $_FILES["file"]["name"]);
        
        $extension = end($temp);     // 获取文件后缀名

        $result=false;

        if (($_FILES["file"]["type"] == "application/vnd.android.package-archive")
            && in_array($extension, $allowedExts))
        {
            if ($_FILES["file"]["error"] > 0)
            {
                $error='Error: '. $_FILES["file"]["error"];
                echo "<script>alert($error)</script>";
            }
            else
            {
                move_uploaded_file($_FILES["file"]["tmp_name"],'/opt/lampp/htdocs/CheckApkUpdate/public/' . $_FILES["file"]["name"]);
              $result= true;
            }
        }
        else
        {
            echo "<script>alert('Error: Unsupported format')</script>";
        }

        if ($result){
            echo "<script>alert('success')</script>";
        }

    }

默认上传会到opt/lampp/temp下,执行结束会删除临时文件。

重点:1. public要给777权限,不然无法把文件移动过去。

2. 文件大小,默认是40M,如果要上传超过40M的,去修改opt/lampp/etc/php.ini

; Maximum size of POST data that PHP will accept.
; http://php.net/post-max-size
post_max_size=140M

upload_tmp_dir="/opt/lampp/temp/"
; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize=140M

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值