PHP   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了PHP Filesystem上传文件的使用大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

Filesystem 函数允许您访问和操作文件系统。Filesystem 函数PHP 核心的组成部分,无需安装即可使用这些函数。下面是使用例子:

前端部分,这里我使用ajax上传文件

<form id="contact-form"  method="post">
    <div class="row">
        <div class="col-md-12">
            <input type="text" name="title" id="res_title" placeholder="標題">
        </div>
        <div class="col-md-6">
            <input type="text" name="name" id="res_name" placeholder="姓名">
        </div>
        <div class="col-md-6">
            <input type="text" name="phone" id="res_phone" placeholder="電話">
        </div>
        <div class="col-md-12">
            <textarea name="content" cols="30" rows="10" placeholder="留言內容"></textarea>
            <input type="hidden" name="cate_id" value="{$cate.iD}">
            <input type="file" id="file" name="file" class="button-default"/>
            <button type="button" class="button-default res_button">提交</button>
        </div>
    </div>
</form>


<script>
    $.fn.serializeFiles = function() {
        var form = $(this),formData = new FormData();//通过FormData构造函数创建一个空对象
        var formParams = form.serializeArray();//带有name和value的json,比如{name: "username1", value: "a"}

        //通过append()方法来追加数据,type="file"
        $.each(form.find('input[type="file"]'), function(i, tag) {
            $.each($(tag)[0].files, function(i, filE) {
                formData.append(tag.name, filE);
            });
        });

        //通过append()方法来追加数据,type="text"
        $.each(formParams, function(i, val) {
            formData.append(val.name, val.value);
        });

        return formData;
    };


    //提交留言
    $(".res_button").click(function () {
        var name = $("#res_name").val();
        var phone = $("#res_phone").val();
        var title = $("#res_title").val();
        if (!titlE) {
            layer.msg("標題,不能為空!");
            return;
        }
        if (!Name) {
            layer.msg("名稱,不能為空!");
            return;
        }
        if (!phonE) {
            layer.msg("電話,不能為空!");
            return;
        }
        var formData= $("#contact-form").serializeFiles();

        $.ajax({
            url:"{:url('index/pay_upload')}",
            processData : false, // 使数据不做处理
            contentType : false, // 不要设置Content-Type请求头
            type:"POST",
            data:formData,
            success:function (res) {
                if (res.code == 200) {
                    layer.msg("success!!",{icon:1,time:2000,end:function(){
                            window.LOCATIOn.reload();
                        }})
                }
            }
        })

    })
</script>

app/common.PHP

function uploadFile($file, $dir){

    // 使用验证器验证上传文件
//    validate(['file' => [
//        // 限制文件大小(单位b),这里限制为4M
//        'fileSize' => 4 * 1024 * 1024,
//        // 限制文件后缀,多个后缀以英文逗号分割
//        'fileExt'  => 'gif,jpg,png'
//        // 更多规则请看“上传验证”的规则,文档地址https://www.kancloud.cn/manual/thinkPHP6_0/1037629#_444
//    ]])->check(['file' => $file]);

    // 文件名规则,认是当前时间。可以使用哈希算法,如:md5,sha1等。还可以传入匿名函数
    $rule = 'date()';
    // 将文件保存public磁盘,文件名为$rule指定的规则。然后将文件路径赋值给$path
    $path = \think\facade\Filesystem::disk('public')->putFile($dir, $filE);
    // 拼接URL路径
    $url = \think\facade\Filesystem::getDiskConfig('public', 'url') . '/' . str_replace('\\', '/', $path);
    $save_path = \think\facade\Filesystem::getDiskConfig('public', 'root') . '/' . str_replace('\\', '/', $path);

    $url_arr = explode('/', $url );

    $info = [
        'save_path' => str_replace('\\', '/', $save_path),
        // URL路径
        'url'  => str_replace('\\', '/', $url),
        // 文件大小(字节)
        'size' => $file->getSize(),
        // 文件名
        'save_name' => $url_arr[count($url_arr)-1],
        'original_name' => $file->getOriginalName(),
        // 文件mine:image/jpeg
        'mine' => $file->getMime(),
        //文件扩展名
        'extension' => $file->getOriginalExtension(),
    ];

    return $info;
}

控制器:

//付款上载
public function pay_upload(){
    $param = $this->request->@R_95_1403@;

    if ($_FILES) {
            // 上传文件错误或者文件验证不通过时,都会抛出异常,所以要使用try来捕捉异常
            try {
                // 获取上传文件,如果有上传错误,会抛出异常
                $file = \think\facade\request::file('file');

                // 如果上传文件为null,手动抛出一个异常,统一处理异常
                if (null === $filE) {
                    // 异常代码使用UPLOAD_ERR_NO_FILE常量,方便需要进一步处理异常时使用
                    throw new \Exception('请上传文件', UPLOAD_ERR_NO_FILE);
                }

                $fileinfo = uploadFile($file, 'payUpload');

                if ($fileinfo) {
                    $param['file_name'] = $fileinfo['original_name'];
                    $param['save_name'] = $fileinfo['save_name'];
                    $param['file_ext'] = $fileinfo['extension'];
                    $param['file_mime_type'] = $fileinfo['mine'];
                    $param['file_size'] = $fileinfo['size'];
                    $param['url'] = $fileinfo['url'];
                    $param['save_path'] = $fileinfo['save_path'];
                }
                $param['create_time'] = time();
                $res = Payupload::insert($param);
                if ($res) {
                    return json(['code' => 200]);
                } else{
                    return json(['code' => 0]);
                }

            } catch (\Exception $E) {
                // 如果上传时有异常,会执行这里的代码,可以在这里处理异常
                return json([
                    'code' => 1,
                    'msg' => $e->getmessage(),
                ]);
            }
        }

        else{
            return json(['code' => 0]);
        }

}

全局设置保存文件的路劲:

@H_674_19@

 

 

 

 

 

ThinkPHP6.0https://www.kancloud.cn/monday/thinkPHP6/1482307

大佬总结

以上是大佬教程为你收集整理的PHP Filesystem上传文件的使用全部内容,希望文章能够帮你解决PHP Filesystem上传文件的使用所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: