ajax上传文件原理
❶ APICloud 社区api.ajax接口多个文件上传怎么传参
通过post请求上传,有两种方式,跟form表单通过file标签提交文件是一样的。
1、一种是键值对的方式,也就是一个name对应一个file:
api.ajax({
url: 'http://host/upLoad',
method: 'post',
report:true,//回调上传进度
data: {
files: {
file1: '/sdcard/a.png',
file2: '/sdcard/b.png',
file3: '/sdcard/信搭c.png',
}
}
}, function(ret, err) {
if (ret) {
console.log(JSON.stringify(ret));
} else {
console.log(JSON.stringify(err));
}
});
2、另外一种是上传文件数组,这种方式你的游坦毕服务器要配合做特殊的处理进行支持:
api.ajax({
url: 'http://host/upLoad',
method: 'post',
report:true,/神芹/回调上传进度
data: {
files: {
images: ['/sdcard/a.png', '/sdcard/b.png', '/sdcard/c.png']
}
}
}, function(ret, err) {
if (ret) {
console.log(JSON.stringify(ret));
} else {
console.log(JSON.stringify(err));
}
});
❷ ajax怎么提交带文件上传表单
上传的文件是没有办法和表单内容一起异步的,可考虑使用jquery的ajaxfileupload,或是其他的插件,异步上传文件后,然后再对表单进行操作。
❸ 如何使用ajax实现文件上传
使用 Ajax 实现文件上传的主要步骤如下:
1. 创建 HTML 表单:设置包含文件选择器和提交按钮的表单。
2. 引入 AJAX 库:为简化操作,通常会引入 jQuery 或者 Axios 库。
3. 编写 AJAX 代码:使用 XMLHttpRequest 或者库函数发起文件上传请求。
4. 配置请求:设置请求类型(POST 或者 PUT)、服务器端点和请求头。请求头需要包含用于处理文件上传的参数,如 Content-Type 和边界参数。
5. 发送文件:将文件作为二进制数据发送到服务器。
6. 处理服务器响应:接收服务器返回的数据,进行相应的操作,如显示上传结果或错误信息。
以下是使用 jQuery 的 Ajax 上传文件的简化代码示例:
HTML 表单:
上传文件
javaScript 代码:
javascript
$(document).ready(function () {
$("#fileUploadForm").submit(function (event) {
event.preventDefault();
var formData = new FormData();
formData.append("file", $("#fileInput")[0].files[0]);
$.ajax({
url: "upload.php",
type: "POST",
data: formData,
processData: false,
contentType: false,
success: function (response) {
console.log(response);
// 处理服务器响应,显示上传结果或错误信息
},
error: function () {
console.log("上传失败");
// 处理上传失败情况
},
});
});
});
在这个示例中,我们使用 jQuery 的 `ajax` 函数发起文件上传请求,并将文件作为 FormData 对象的一部分发送到服务器端点 "upload.php"。服务器端需要配置为接收并处理文件上传。
通过以上步骤和示例代码,你可以实现使用 Ajax 来上传文件的功能。根据具体需求和服务器端实现,可能还需要进行额外的配置和操作。
❹ ajax怎样提交form表单与实现文件上传
Ajax 提交form方式可以将form表单序列化 然后将数据通过data提交至后台,例如:
❺ 如何用Ajax实现多文件上传
jquery 实现多个上传文件教程:
首先创建解决方案,添加jquery的js和一些资源文件(如图片和进度条显示等):
1
2
3
4
5
jquery-1.3.2.min.js
jquery.uploadify.v2.1.0.js
jquery.uploadify.v2.1.0.min.js
swfobject.js
uploadify.css
1、页面的基本代码如下
这里用的是aspx页面(html也是也可的)
页面中引入的js和js函数如下:
1
2
3
4
5
6
7
<script src="js/jquery-1.3.2.min.js" type="text/javascript"></script>
<script src="js/jquery.uploadify.v2.1.0.js" type="text/javascript"></script>
<script src="js/jquery.uploadify.v2.1.0.min.js" type="text/javascript"></script>
<script src="js/swfobject.js" type="text/javascript"></script>
<link href="css/uploadify.css" rel="stylesheet" type="text/css" />
</script>
js函数:
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
<script type="text/javascript">
$(document).ready(function () {
$("#uploadify").uploadify({
'uploader': 'image/uploadify.swf', //uploadify.swf文件的相对路径,该swf文件是一个带有文字BROWSE的按钮,点击后淡出打开文件对话框
'script': 'Handler1.ashx',// script : 后台处理程序的相对路径
'cancelImg': 'image/cancel.png',
'buttenText': '请选择文件',//浏览按钮的文本,默认值:BROWSE。
'sizeLimit':999999999,//文件大小显示
'floder': 'Uploader',//上传文件存放的目录
'queueID': 'fileQueue',//文件队列的ID,该ID与存放文件队列的div的ID一致
'queueSizeLimit': 120,//上传文件个数限制
'progressData': 'speed',//上传速度显示
'auto': false,//是否自动上传
'multi': true,//是否多文件上传
//'onSelect': function (e, queueId, fileObj) {
// alert("唯一标识:" + queueId + "\r\n" +
// "文件名:" + fileObj.name + "\r\n" +
// "文件大小:" + fileObj.size + "\r\n" +
// "创建时间:" + fileObj.creationDate + "\r\n" +
// "最后修改时间:" + fileObj.modificationDate + "\r\n" +
// "文件类型:" + fileObj.type);
// }
'onQueueComplete': function (queueData) {
alert("文件上传成功!");
return;
}
});
});
页面中的控件代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
<body>
<form id="form1" runat="server">
<div id="fileQueue">
</div>
<div>
<p>
<input type="file" name="uploadify" id="uploadify"/>
<input id="Button1" type="button" value="上传" onclick="javascript: $('#uploadify').uploadifyUpload()" />
<input id="Button2" type="button" value="取消" onclick="javascript:$('#uploadify').uploadifyClearQueue()" />
</p>
</div>
</form>
</body>
函数主要参数:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$(document).ready(function() {
$('#fileInput1').fileUpload({
'uploader': 'uploader.swf',//不多讲了
'script': '/AjaxByJQuery/file.do',//处理Action
'cancelImg': 'cancel.png',
'folder': '',//服务端默认保存路径
'scriptData':{'methed':'uploadFile','arg1','value1'},
//向后台传递参数,methed,arg1为参数名,uploadFile,value1为对应的参数值,服务端通过request["arg1"]
'buttonText':'UpLoadFile',//按钮显示文字,不支持中文,解决方案见下
//'buttonImg':'图片路径',//通过设置背景图片解决中文问题,就是把背景图做成按钮的样子
'multi':'true',//多文件上传开关
'fileExt':'*.xls;*.csv',//文件过滤器
'fileDesc':'.xls',//文件过滤器 详解见文档
'onComplete' : function(event,queueID,file,serverData,data){
//serverData为服务器端返回的字符串值
alert(serverData);
}
});
});
后台一般处理文件:
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
using System.Net;
using System.Web;
using System.Web.Services;
namespace fupload
{
/// <summary>
/// Handler1 的摘要说明
/// </summary>
public class Handler1 : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
HttpPostedFile file = context.Request.Files["Filedata"];//对客户端文件的访问
string uploadPath = HttpContext.Current.Server.MapPath(@context.Request["folder"])+"\\";//服务器端文件保存路径
if (file != null)
{
if (!Directory.Exists(uploadPath))
{
Directory.CreateDirectory(uploadPath);//创建服务端文件夹
}
file.SaveAs(uploadPath + file.FileName);//保存文件
context.Response.Write("上传成功");
}
else
{
context.Response.Write("0");
}
}
public bool IsReusable
{
get
{
return false;
}
}
}
}
以上方式基本可以实现多文件的上传,大文件大小是在控制在10M以下/。
❻ PHP 用AJAX 做多文件上传
比较推荐使用swfupload上传代码,它是把swf和javascript结合起来,做成上传代码。功能应该是当前最丰富的。
它可以实现纯粹html、javascrip难以逾越的功能:
(1)可以同时上传多个文件;
(2)类似AJAX的无刷新上传;
(3)可以显示上传进度;
(4)良好的浏览器兼容性;
目前QQ空间和博客网站,比较先进的图片上传也是基于swf和js代码结合的做法。
关于swfupload,你可以详细去网络上看,不重复了。
http://ke..com/view/1332553.htm
❼ 怎么用ajax实现上传文件的功能
HTTP File Server
http-file-server是用 python 实现的 HTTP 文件服务器,支持上传和下载文件。
运行
$ python file-server.py files 8001
其中第一个参数files是存放文件的路径,第二个参数8001是 HTTP 服务器端口。
接口
1. 读取文件
GET /pathtofile/filename
2. 读取文件夹下所有文件(已经忽略隐藏文件)
GET /path
返回文件列表为JSON数组,文件名末尾带有/的表示是文件夹。filename为文件名,mtime为修改时间。
[{"filename":"f1.txt","mtime":1001},{"filename":"p3/","mtime":1002}]
3. 上传文件
采用POST方式上传文件,URL参数中传参数name表示上传的文件名,POST内容为文件内容。
POST /upload?name=filename
ajax示例:
// file is a FileReader object
var data = file.readAsArrayBuffer();
var xhr = new XMLHttpRequest();
var url = "http://localhost:8001/upload?name=xxx.md";
xhr.open("post", url, true);
xhr.setRequestHeader("Accept", "application/json, text/javascript, */*; q=0.01");
xhr.onreadystatechange = function() {
if (xhr.readyState==4 && xhr.status==200)
{
console.log(xhr.responseText);
}
}
xhr.send(data);
文件名 filename 可以包含相对路径。比如:upload?name=md/xxx.md。则上传至md目录下。