如何把文件提交给接口上传到服务器(php版)

简介: 如何把文件提交给接口上传到服务器(php版)

1.接口地址:https://www.wlphp.com/myblog_demo/api/uploadfile/index.php          接口在本站服务器,因本站流量有限请勿上传大文件谢谢!


2.html端: index.html


<meta  charset='utf-8'>

<script src="http://apps.bdimg.com/libs/jquery/1.6.4/jquery.js"></script>


<form id= "uploadForm">

       <p>name:<input type="text" name="name" ></p>

       <p>gender:<input type="radio" name="gender" value="1">male <input type="radio" name="gender" value="2">female</p>

       <p>photo:<input type="file" name="photo" id="photo"></p>

 <p><input type="button" link="sub"   value="提交"></p>

</form>


   <div id="result"></div>

<script>

$("[link=sub]").click(function (){   var data = new FormData($('#uploadForm')[0]);

       $.ajax({    url: 'a.php',

           type: 'POST',

           data: data,

           dataType: 'json',

           cache: false,

           processData: false,

           contentType: false

       }).done(function(ret){

           if(ret['isSuccess']){

               var result = '';

               result += 'name=' + ret['name'] + '<br>';

               result += 'gender=' + ret['gender'] + '<br>';

               result += '<img src="' + ret['photo']  + '" width="100">';

               $('#result').html(result);

           }else{

               alert('提交失敗');

           }

       });

       return false;

});



//type=file 一旦change就上传图片

$("[name=photo]").change(function (){var data = new FormData($('#uploadForm')[0]);

       $.ajax({      url: 'a.php',

           type: 'POST',

           data: data,

           dataType: 'json',

           cache: false,

           processData: false,

           contentType: false

       }).done(function(ret){

           if(ret['isSuccess']){

               var result = '';

               result += 'name=' + ret['name'] + '<br>';

               result += 'gender=' + ret['gender'] + '<br>';

               result += '<img src="' + ret['photo']  + '" width="100">';

               $('#result').html(result);

           }else{

               alert('提交失敗');

           }

       });

       return false;

});

</script>


3.html提交给自己的程序a.php (如果用js提给接口会存在跨域问题)


<?php

//文件路径

$file="@".$_FILES['photo']['tmp_name'];

//获取文件扩展名

$file_name_arr=pathinfo($_FILES['photo']['name']);

$file_extension=$file_name_arr['extension'];


$name=$_POST['name'];

$gender=$_POST['gender'];

$ch = curl_init();

$post_data = array(

   'name' => $name,

   'gender' => $gender,

'file' => $file,

'file_extension'=>$file_extension,

);

curl_setopt($ch, CURLOPT_HEADER, false);

//启用时会发送一个常规的POST请求,类型为:application/x-www-form-urlencoded,就像表单提交的一样。

curl_setopt($ch, CURLOPT_POST, true);

curl_setopt($ch,CURLOPT_BINARYTRANSFER,true);

curl_setopt($ch, CURLOPT_POSTFIELDS,$post_data);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);      //得到返回值且不显示在页面上

curl_setopt($ch, CURLOPT_URL, 'https://www.wlphp.com/myblog_demo/api/uploadfile/index.php');   //可以理解为接口地址

$info= curl_exec($ch);    //可以理解为接口返回值

curl_close($ch);

//完全输出接口返回值

echo $info;


4.php接口:


<?php

error_reporting(0);

$file_extension=$_POST['file_extension'];

$filename = "./upload/".time().time().".".$file_extension;

if(move_uploaded_file($_FILES['file']['tmp_name'], $filename)){

$response['isSuccess'] = true;

   $response['name'] = $_POST['name'];

   $response['gender'] = $_POST['gender'];

   $response['photo'] = dirname('http://'.$_SERVER['SERVER_NAME'].':'.$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]).$filename;

}else{

   $response['isSuccess'] = false;

}


echo json_encode($response);


5.演示地址:https://www.wlphp.com/myblog_demo/ajaxuploadinterface/index.html            //不支持ie低版本   ie低版本不支持 FormData 对象


相关文章
|
5月前
|
JSON 监控 API
在线网络PING接口检测服务器连通状态免费API教程
接口盒子提供免费PING检测API,可测试域名或IP的连通性与响应速度,支持指定地域节点,适用于服务器运维和网络监控。
|
5月前
|
机器学习/深度学习 存储 监控
内部文件审计:企业文件服务器审计对网络安全提升有哪些帮助?
企业文件服务器审计是保障信息安全、确保合规的关键措施。DataSecurity Plus 是由卓豪ManageEngine推出的审计工具,提供全面的文件访问监控、实时异常告警、用户行为分析及合规报告生成功能,助力企业防范数据泄露风险,满足GDPR、等保等多项合规要求,为企业的稳健发展保驾护航。
145 0
|
5月前
|
安全 Linux Shell
使用SCP命令在CentOS 7上向目标服务器传输文件
以上步骤是在CentOS 7系统上使用SCP命令进行文件传输的基础,操作简洁,易于理解。务必在执行命令前确认好各项参数,尤其是目录路径和文件名,以避免不必要的传输错误。
532 17
|
5月前
|
自然语言处理 Unix Linux
解决服务器中Jupyter笔记本的文件名字符编码问题
通过上述步骤,可以有效解决Jupyter笔记本的文件名字符编码问题,确保所有文件能在服务器上正常访问并交互,避免因编码问题引起的混淆和数据丢失。在处理任何编码问题时,务必谨慎并确保备份,因为文件名变更是
200 17
|
5月前
|
安全 Linux 网络安全
Python极速搭建局域网文件共享服务器:一行命令实现HTTPS安全传输
本文介绍如何利用Python的http.server模块,通过一行命令快速搭建支持HTTPS的安全文件下载服务器,无需第三方工具,3分钟部署,保障局域网文件共享的隐私与安全。
1065 0
|
8月前
|
Python
使用Python实现multipart/form-data文件接收的http服务器
至此,使用Python实现一个可以接收 'multipart/form-data' 文件的HTTP服务器的步骤就讲解完毕了。希望通过我的讲解,你可以更好地理解其中的逻辑,另外,你也可以尝试在实际项目中运用这方面的知识。
375 69
|
9月前
|
前端开发 Cloud Native Java
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
|
9月前
|
PHP 数据库
【YashanDB知识库】PHP使用OCI接口使用数据库绑定参数功能异常
【YashanDB知识库】PHP使用OCI接口使用数据库绑定参数功能异常
|
10月前
|
应用服务中间件 PHP nginx
当你的nginx服务器和php服务器不在一起的时候,这个nginx 的root目录问题
两个服务器的网站代码目录需要对齐,docker容器里面也是一样
|
11月前
|
存储 安全 网络安全
服务器感染了.baxia勒索病毒,如何确保数据文件完整恢复?
近年来,勒索病毒如.baxia不断演变,利用漏洞、社交工程等手段加密文件,威胁范围扩大。加密货币的兴起使其支付方式更匿名,追踪困难。技术支持尤为重要,添加技术服务号(shuju315),专业团队提供数据恢复方案。面对复杂解密要求,包括赎金支付、个人信息提供和执行特定操作,需保持冷静并寻求帮助。防御措施包括加强安全意识、定期备份数据、安装杀毒软件、避免未知文件、更新系统及制定应急响应计划。
476 11