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;
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值