如何把文件提交给接口上传到服务器(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 对象


相关文章
|
1月前
|
存储 弹性计算 数据可视化
要将ECS中的文件直接传输到阿里云网盘与相册(
【2月更文挑战第31天】要将ECS中的文件直接传输到阿里云网盘与相册(
420 4
|
1月前
thinkphp5.1隐藏index.php入口文件
thinkphp5.1隐藏index.php入口文件
30 0
thinkphp5.1隐藏index.php入口文件
|
2月前
|
数据可视化 Shell Linux
shell+crontab+gitlab实现ecs服务器文件的web展示
本文通过把ecs服务器上的文件定时上传至gitlab,实现文件的页面可视化和修改历史。技术点:shell、crontab、gitlab。
51 3
|
1月前
|
Linux 网络安全 Python
如何在服务器上运行python文件
如何在服务器上运行python文件
|
7天前
|
小程序 开发者
体验版小程序为何无法访问云端服务器后端接口(请求失败...(已完美解决附加图片))?
体验版小程序为何无法访问云端服务器后端接口(请求失败...(已完美解决附加图片))?
13 0
|
7天前
|
PHP
PHP面向对象编程精要:接口、抽象类和继承
PHP面向对象编程涉及接口、抽象类和继承。接口定义了类必须实现的方法,抽象类包含抽象方法,不可实例化,而继承允许子类扩展父类属性和行为。通过案例展示了如何使用interface、abstract和extends关键字。这些概念增强了代码的灵活性、可维护性和可扩展性。
12 1
|
23天前
|
JavaScript API
本地开发环境请求服务器接口跨域的问题(vue的问题)
本地开发环境请求服务器接口跨域的问题(vue的问题)
17 1
|
1月前
|
安全 数据处理 C#
C# Post数据或文件到指定的服务器进行接收
C# Post数据或文件到指定的服务器进行接收
|
2月前
|
Java
java上传、下载、预览、删除ftp服务器上的文件
java上传、下载、预览、删除ftp服务器上的文件
|
2月前
|
弹性计算 网络安全
阿里云OpenAPI提供了多种接口来管理ECS实例
【2月更文挑战第1天】阿里云OpenAPI提供了多种接口来管理ECS实例
32 0