PHP服务上传文件
PHP服务上传文件
- 共有两种提交方法 该文件采用 方法(2)
- form 提交表单
- 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 结构的字符串
- 服务端环境搭建配置
需要 配置 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;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?