PHP服务上传文件

PHP服务上传文件

  • 共有两种提交方法 该文件采用 方法(2)
  1. form 提交表单
  2. ajax 模拟form 数据格式提交
  • 该文件没有解决跨域的问题, 如有需要请自行解决

前端代码

该代码拥有两种上传方式 分别为 jQuery=>ajax 和 fetch

<body>
    <form id= "upload_form">
        指定文件名:<input type="text" name="filename" id="filename"/>
    </br>
        上传文件:<input type="file" name="file" id="file"/>
    </br>
        <input type="button" value="上传" onclick="upload()" />
    </form>
</body>
<script>
    function upload(){
        var form = new FormData();
        form.append('filename', $('#filename').val())
        form.append('file', $('#file')[0].files[0]);

        // $.ajax({  
        //     url:'./upload.php',
        //     type:'POST',
        //     data:form,
        //     processData: false,
        //     contentType: false,
        //     success:function (result){  
        //         alert(result);  
        //     },  
        //     error:function (result){  
        //         alert(result);  
        //     }  
        // });

        fetch('./upload.php', {
            headers: {
            },
            method: 'POST',
            mode: "cors",
            body: form
        })
        .then(function(response) {
            if(response.ok) {
                return response.json();
            }
        })
        .then(function(myJson) {
            console.log(myJson);
            if(myJson.code == 200) {
                cbCount++
                if(cbCount == thisObj.List.length) {
                    thisObj.GetData();
                }
            }
        });

    }
</script>

PHP服务代码

文件提交为做格式处理判断, 如果需要请自行处理
该方法 核心 为 move_uploaded_file

即 文件上传后会存提交缓存地址, 该方法可以让文件转存地址并保存

<?php
header('Content-Type:application/json; charset=utf-8');
## 主要就是一个接受数据
$file=$_FILES["file"];//文件一详情
$filename = $_POST["filename"];
// echo $filename;
// print_r($file);//数组使用print_r打印
##move_uploaded_file 的作用,将临时存储的文件存到想要存的路径,默认是和这php文件在同一级,我是在此文件夹下建了一个子文件夹用来放上传的文件。
$uploadDir = 'static/upload';
$targetFile = $uploadDir . '/' . time() . $filename;
$upload_ret = move_uploaded_file($file["tmp_name"], $targetFile) ? true : false;
// 返回文件名称 并在客户端配位置 php服务路径, 为了防止服务地址更换所造成的数据获取错误
exit(json_encode(array(
    'path'=>$targetFile
)));
// fetch 所接受到的数据 需要为json 结构的字符串
  1. 服务端环境搭建配置

需要 配置 php-fpm 环境 才可以使用
我遇到的问题

  • php-fpm 启动异常 提示 缺少文件 确不报告文件位置
  • 解决方法 看到了 文件引用异常 php-fpm.conf www.conf 两个文件具有该顺序的引用关系
  • 并需要 从 *.default 文件中 删除 default 创建新文件
server{
	listen 8002;
	server_name upload;
	root /Users/codes/webphp/upload_img;

	location ~ \.php$ {
		fastcgi_pass 127.0.0.1:9000;
		fastcgi_index index.php;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		include fastcgi_params;
	}
}
posted @   qoon  阅读(166)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示