api接口图片上传
Ⅰ 如何在手机浏览器中运用HTML5的文件API实现上传多图功能
Html5终于解决了上传文件的同时显示文件上传进度的老问题。现在大部分的网站用Flash去实现这一功能,还有一些网站继续采用Html <form>with enctype=multipart/form-data,但是需要修改服务器端可用才能显示给用户文件上传的进度。本质上你需要做的工作是在服务器端接收一个文件时,你发送给它一个字节流,所以你需要知道你已经接收到多少字节并以某种方式传达这些信息给客户端浏览器,在这个过程一直在不断的进行文件的上传。这种方式运行的非常好,不像Flash上传那这样充满了问题(特别是处理大文件上传的时候),然而这种方法是相当复杂的并且听起来不容易理解,因为你本质上是接管了整个服务器端的处理(获取字节流的时候)同时包括了在服务器端实现multipart/form-data协议,伴随一系列的其他事情。
使用Html5 上传文件
XMLHttpRequest 在Html5 规范中已经有全新的变化,规定了XMLHttpRequest Level 2规范(目前最新版本)包含下列新的特性:
处理字节流,例如作为上传或者下载的File,Blob,FormData对象
上传或者下载中的进度事件
跨站点请求
允许创建匿名请求
可以设置请求超时
在这篇文章中我们将能够更清楚的看到#1和#2两个特性。通常,上传文件用XMLHttpRequest并且提供上传进度信息给最终的用户,需要注意的是这种方式解决了不需要服务器端做任何改变,至少是目前处理multipart/form-data协议。所以服务器端的处理逻辑保留不变,这使得开发者适应这种技术相当容易。
图1:文件上传画面-准备上传 图2:显示上传完成画面
注意:上面的图片中,信息提示区域是提供给用户的:
当前选中文件的信息
文件名
文件大小
文件类型
上传完成多少的百分比进度条
上传速度或者上传带宽
距离上传完成大概还有多长时间
已上传文件大小
服务器端的响应
上面第6项或许看起来不重要,但事实上是相当重要的。因为我们用XMLHttpRequest,上传发生在后台,页面没有发生跳转等任何变化,所以对于你用它处理其他一些事情来说是一个非常好的特性。
Html5 Progress Event
对于Html5 Progress Events规范,Html5 Progess Events提供了下列与本次讨论相关的信息
total - 总的字节数
loaded - 到目前为止上传的字节数
lengthComputable - 可计算的已上传字节
请注意到我们需要用两个信息去计算要显示给用户的其他所有信息。要计算出来其他的信息通过上面我们得到信息是相当容易的,但是那需要一些额外的代码并且创建一个定时器。
Html5 Progress Event 应该是什么
考虑到有一部分人想更好的提供给用户所有的信息,所以Html5 Progress Event应该更好的满足需要,因为它给浏览器供应商提供这些额外信息是相当简单的,所以建议progress event应该修改成如下:
total - 总的字节数
loaded - 到目前为止上传的字节数
lengthComputable - 可计算的已上传字节
transferSpeed long类型
timeRemaining javaScript 日期对象
Html5 上传 用XMLHttpRequest
浏览器支持情况
支持这一特性的浏览器最低版本
Firefox 4.0 beta 6
Chrome 6
Safari 5.02
IE 9 Beta and Opera 10.62 不支持这一特性
简单的示例
下面是一个完整的Html页面包含了实现文件上传并带有进度提示的JavaScript代码,只是实现了基本的功能,感兴趣的可以自己做扩展。 需要吧上传接口修改成自己服务的。
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<!DOCTYPE html>
<html>
<head>
<title>Upload Files using XMLHttpRequest - Minimal</title>
<script type="text/javascript">
function fileSelected() {
var file = document.getElementById('fileToUpload').files[0];
if (file) {
var fileSize = 0;
if (file.size > 1024 * 1024)
fileSize = (Math.round(file.size * 100 / (1024 * 1024)) / 100).toString() + 'MB';
else
fileSize = (Math.round(file.size * 100 / 1024) / 100).toString() + 'KB';
document.getElementById('fileName').innerHTML = 'Name: ' + file.name;
document.getElementById('fileSize').innerHTML = 'Size: ' + fileSize;
document.getElementById('fileType').innerHTML = 'Type: ' + file.type;
}
}
function uploadFile() {
var fd = new FormData();
fd.append("fileToUpload", document.getElementById('fileToUpload').files[0]);
var xhr = new XMLHttpRequest();
xhr.upload.addEventListener("progress", uploadProgress, false);
xhr.addEventListener("load", uploadComplete, false);
xhr.addEventListener("error", uploadFailed, false);
xhr.addEventListener("abort", uploadCanceled, false);
xhr.open("POST", "upload.do");//修改成自己的接口
xhr.send(fd);
}
function uploadProgress(evt) {
if (evt.lengthComputable) {
var percentComplete = Math.round(evt.loaded * 100 / evt.total);
document.getElementById('progressNumber').innerHTML = percentComplete.toString() + '%';
}
else {
document.getElementById('progressNumber').innerHTML = 'unable to compute';
}
}
function uploadComplete(evt) {
/* 服务器端返回响应时候触发event事件*/
alert(evt.target.responseText);
}
function uploadFailed(evt) {
alert("There was an error attempting to upload the file.");
}
function uploadCanceled(evt) {
alert("The upload has been canceled by the user or the browser dropped the connection.");
}
</script>
</head>
<body>
<form id="form1" enctype="multipart/form-data" method="post" action="Upload.aspx">
<div class="row">
<label for="fileToUpload">Select a File to Upload</label><br />
<input type="file" name="fileToUpload" id="fileToUpload" onchange="fileSelected();"/>
</div>
<div id="fileName"></div>
<div id="fileSize"></div>
<div id="fileType"></div>
<div class="row">
<input type="button" onclick="uploadFile()" value="Upload" />
</div>
<div id="progressNumber"></div>
</form>
</body>
</html>
Ⅱ restful api上传文件
不太清楚你写这个借口的目的是什么,一般我们做上传都是前端通过控件上传后得到路径,然后调用一个方法将路径保存就可以了。你这个借口的目的是什么?
先调用接口获得路径是保存路径不一样的情况才这样做的。如果上传的路径是一样的就没有那个必要再去调用一次了
Ⅲ php怎么把远程图片通过api接口传到另外一个站点上
本地传图片到服务器叫上传,服务器从别的网站获取图片,这叫下载,这比上传还简单
$content = file_get_contents(图片地址);
file_put_contents(保存的路径文件名, $content);
Ⅳ php手机站,怎么上传图片给服务器(提交给接口api处理)
上传操作可以使用FTP来实现,用php即可调用。
FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传"(Upload)。"下载"文件就是从远程主机拷贝文件至自己的计算机上;"上传"文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。
Ⅳ 我有一个http的API接口,有一参数imgfile,就是上传本体图片,给的示例是multipar
<form id="form1" enctype="multipart/form-data" >
<input type="file" />
<input type="submit" value="提交" />
</form>
Ⅵ API接口是什么
API(或应用程序接口)是用于在软件 App 之间以形式化的方式来回传递数据的接口。
常见的API类型很多,有生活服务类、金融科技类、应用开发类等等。用聚合数据的API举例,生活服务类:
短信API服务-支持三大运营商,虚拟运营商短信发送,电信级运维保障,独享专用通道,3秒可达,99.99%到达率,支持大容量高并发——超低资费
新闻头条-最新新闻头条,各类国内、国际、体育、娱乐、科技等资讯,更新周期5-30分钟
空气质量-支持全国大部分城市空气质量查询,可实时查询空气质量,小时粒度,实时给出空气质量AQI指数,并给出空气质量级别和首要污染物。
全国停车场实时数据查询-根据经纬度精准查询全国60个城市10万个停车场实时数据,包含停车场位置,车位数,剩余车位、费用等信息。
语音图像垃圾分类识别-通过提交语音垃圾名称或上传垃圾物品图片自动识别垃圾名称并检索相关联的垃圾分类信息,海量垃圾分类,毫秒级响应。
金融科技类:
身份证实名认证-身份证二要素官方实名核验,传入姓名、身份证号,校验此二要素是否一致。直连官方权威渠道, 精准实时核验,毫秒级响应,零缓存,99.99%准确率。
银行卡四元素校验-检测输入的姓名、手机号码、身份证号码、银行卡号是否一致,毫秒级响应、直联保障,支持全国所有银联卡,实时验证科学严谨,数据100%可靠。
三网手机实名制认证-通过传递姓名+身份证号码+手机号,校验信息是否一致,直连运营商大数据,毫秒级响应,精准核验,准确率99.99%——品质之选。
商标信息查询-覆盖2000多万条各类商标信息,可通过查询商标名/注册号/申请人,获得含有该关键字的商标列表信息。
应用开发类:
搜狗关键词收录量-根据关键词返回搜狗关键词收录量、抓取时间
whois反查-根据电话、邮箱、注册人反查Whois信息(最多100条数据)
网安域名备案查询-根据域名返回查询网安域名的备案信息
主办单位备案查询-根据公司名称返回查询所有备案信息
Ⅶ php怎么通过api接口上传图片
require_once "../common_mysql.php";
require_once MESSAGE_PATH . 'zh/zh_calendar_message.php';
require_once "function_common/user_function.php";
require_once "function_common/public_function.php";
global $DB;
$sql_time = microtime ( true );
//$uid = $self_userid;
//保存图片
$json_result ['status'] = 0;
$path = 'upfile';
$json_result ['status'] = 0;
$json_result ['successmsg'] = '上传失败';
if (isset ( $_FILES ['imageZip'] )) {
$upfile = 'upfile/' . $_FILES ['imageZip'] ['name'];
if (! @file_exists ( $path )) {
@mkdir ( $path );
}
$result = @move_uploaded_file ( $_FILES ['imageZip'] ['tmp_name'], $upfile );
if (! $result) {
$json_result ['status'] = 0;
$json_result ['successmsg'] = '上传失败';
$json_result ['datas'] = array ('savePath' => $upfile );
exit ( json_encode ( $json_result ) );
}
}
$json_result ['status'] = 1;
$json_result ['datas'] = array ('savePath' => $upfile );
Ⅷ HTTPRESTAPI如何一次上传多张图片
API接口是一个请求上传一个文件,所以如果需要上传多张图片的话,那就要创建多个请求。
创建多个请求一般有串行上传和并发上传,这个可以根据需要来实现一下。
Ⅸ 本地路径的api上传图片到oss云中图片还会经过自己的服务器吗
是不会经过index的服务器的,是直接通过接口保存到OSS