PHP服务上传文件


PHP服务上传文件

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

前端代码

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


    
指定文件名:
上传文件:

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;
	}
}