- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章PHP Ajax实现无刷新附件上传由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
对一个网站而言,有一个基本的不可缺少的功能,那就是文件上传。使用PHP预压来实现文件上传可谓是有得天独厚的优势的,那么今天,就一起来做一个关于无刷新实现的文件上传吧.
-------------------------------------------------------------------------------- 。
普通表单 。
前端页面 。
1
2
3
4
5
6
7
|
<
form
action
=
"./fileupload.php"
method
=
"POST"
>
<
p
>Username<
input
type
=
"text"
name
=
"username"
/></
p
>
<
p
>Password<
input
type
=
"password"
name
=
"password"
/></
p
>
<
p
>E-mail<
input
type
=
"text"
name
=
"email"
/></
p
>
<
input
type
=
"submit"
value
=
"Register"
/>
</
form
>
|
后台处理 。
1
2
3
4
5
6
|
print_r(
$_POST
);
$username
=
$_POSY
[
'username'
];
$password
=
$_POST
[
'password'
];
$email
=
$_POST
[
'email'
];
// 在服务器上和数据库内容信息对比即可,实现相关的业务逻辑。
|
··· 。
带有文件的表单 。
带有文件的表单和普通表单是有很大的区别的,首先我们要在表单上声明一个属性,如下:
<form enctype='multipart/form-data'> 。
来告诉服务器,我们上传的表单包含有文件信息.
刷新方式 。
谈到刷新模式,也就是点击完submit之后,页面跳转到业务处理界面。这也是我们普通方式实现的表单的数据提交.
前端界面 。
1
2
3
4
5
6
7
|
<
form
action
=
"./fileupload.php"
enctype
=
"multipart/form-data"
method
=
"post"
>
<
p
>Username<
input
type
=
"text"
name
=
"username"
/></
p
>
<
p
>Password<
input
type
=
"password"
name
=
"password"
/></
p
>
<
p
>E-mail<
input
type
=
"text"
name
=
"email"
/></
p
>
<
p
>Photo<
input
type
=
"file"
name
=
"photo"
/></
p
>
<
input
type
=
"submit"
value
=
"Register"
/>
|
后台页面 。
后台处理除了普通的表单数据之外,最重要的是处理文件信息。PHP内置了一个函数,可以方便的把上传过来的文件从临时的数据区转移到我们的目标文件夹,实现上传的业务逻辑.
move_uploaded_file('临时文件路径','目标文件路径'),
无刷新方式 。
使用无刷新方式,与使用刷新方式的唯一的区别就是阻止了页面的跳转,我们通常会有两种方式来实现。 •在表单提交事件的末尾加上return false。 。
1
2
3
4
5
6
7
8
9
10
|
<script>
var
form = document.getElementsByTagName(
'form'
)[0];
form.onsubmit =
function
(){
// to do something
···
// 阻止页面跳转
return
false
;
}
</script>
|
•使用h5相关方式.
1
2
3
4
5
6
7
8
9
10
|
<script>
var
form = document.getElementsByTagName(
'form'
)[0];
form.onsubmit =
function
(event){
// to do something
···
// 阻止页面跳转
event.preventDefault();
}
</script>
|
其他的操作处理与带跳转的保持一致即可.
大文件上传 。
虽然PHP实现其文件上传很方便,也很快速。但是上传文件的大小并不是无限制的。默认来说,有两个因素会限制我们上传文件的大小。 •post的极值 •upload的极值 我们可以通过手动的更改php.ini配置信息来实现上传文件大小的控制。 。
POST极值 。
post_max_size = 200M 。
upload极值 。
upload_max_filesize=200M 。
上传细节 。
ajax对象有一个叫upload的属性,而且upload也作为一个对象而存在。其拥有一个叫onprogress的方法,我们可以通过监测这个方法,来查看文件上传过程中的百分比.
前端页面 。
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
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html
xmlns
=
"http://www.w3.org/1999/xhtml"
>
<
head
>
<
meta
http-equiv
=
"Content-Type"
content
=
"text/html; charset=utf-8"
/>
<
title
>文件上传示例</
title
>
<
script
>
window.onload = function(){
var form = document.getElementsByTagName("form")[0];
form.onsubmit = function(evt){
// 收集表单信息
var fd = new FormData(form);
var ajax = new XMLHttpRequest();
// 给Ajax设置文件上传的感知事件
ajax.upload.onprogress = function(evt){
var loaded = evt.loaded;
var total = evt.total;
document.getElementById("progress").value =(loaded/total)*100;
}
ajax.onreadystatechange = function() {
if(ajax.readyState==4){
alert(ajax.responseText);
}
}
ajax.open('post','./fileupload.php');
ajax.send(fd);
// 阻止浏览器的跳转
evt.preventDefault();
//return false;
}
}
</
script
>
</
head
>
<
body
>
<
h2
>无刷新方式上传附件</
h2
>
<
form
action
=
"./fileupload.php"
>
<
p
>Username<
input
type
=
"text"
name
=
"username"
/></
p
>
<
p
>Password<
input
type
=
"password"
name
=
"password"
/></
p
>
<
p
>E-mail<
input
type
=
"text"
name
=
"email"
/></
p
>
<
p
>Photo<
input
type
=
"file"
name
=
"photo"
/></
p
>
<!--设置进度条-->
<
style
>
#parent {width:300px;height:34px;border:1px solid #033;}
#son {width:100%;height:10%;background-color:green}
progress {width:100%;height:34px;}
</
style
>
<
div
id
=
"parent"
>
<
div
id
=
"son"
>
<
progress
id
=
"progress"
>
</
div
>
</
div
>
<
input
type
=
"submit"
value
=
"Register"
/>
</
form
>
</
body
>
</
html
>
|
后台处理 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
<?php
//print_r($_POST);
//echo "---------------------"."<BR>";
//print_r($_FILES);
// 附件的存储位置、附件的名字,记得一定要存在upload文件夹
$path
=
"../upload/"
;
// 获取文件的原始名称
$origin_name
=
$_FILES
[
'photo'
][
'name'
];
// 拼接成该文件在服务器上的名称
$server_name
=
$path
.
$origin_name
;
if
(
$_FILES
[
'photo'
][
'error'
]>0) {
die
(
"出错了!"
.
$_FILES
[
'photo'
][
'error'
]);
}
if
(move_uploaded_file(
$_FILES
[
'photo'
][
'tmp_name'
],
$server_name
)){
echo
"<BR>"
.
"Upload Success!"
;
}
else
{
echo
"<BR>"
.
"Upload Failed!"
.
$_FILES
[
'photo'
][
'error'
];
}
?>
|
记得保证upload文件夹的存在性以及路径问题。 。
总结 。
文件上传是一个很基础的功能,实现起来也不是很复杂。但是这个功能却又是那么的重要,我们可以方便的通过文件上传来配合修改用户的诸如头像,以及其他文件信息.
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.
原文链接:http://blog.csdn.net/marksinoberg/article/details/52216643 。
最后此篇关于PHP Ajax实现无刷新附件上传的文章就讲到这里了,如果你想了解更多关于PHP Ajax实现无刷新附件上传的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我们知道,当使用 hibernate 对数据库进行批量更新时(即使在 HQL 中),所做的更改不会复制到存储在当前 session 中的实体。 所以我可以调用 session.refresh 来加载对
我正在做一个项目,所有的东西都保存在事件中,所以服务器需要一些时间来响应新数据。我正在使用 Fluent 等待使用 ajax 的页面,但是这个不使用任何 ajax。所以我想刷新页面检查是否有新项目,如
我有一个从 Vector 创建的 JTable。 如何刷新 JTable 以显示添加到 Vector 的新数据? 最佳答案 当 TableModel 发生更改时,您的 JTable 应该会自动更新。我
有没有办法使用下面的代码来刷新已经存在的 div id,而不是刷新时间? window.onload = startInterval; function startInterval() {
我更新了在 Shiny Server 上运行的 Shiny 应用程序使用的 DataSet.RData。但是, Shiny 的应用程序仍在旧数据上运行。我已通过浏览器历史记录清除并重新启动浏览器几次,
我的应用程序中有一个无限滚动的网格面板(ExtJs 4.2.1),类似于 this example .用户可以单击刷新按钮,然后必须使用数据库中的数据更新网格的行。我在刷新按钮处理程序中调用 stor
我不知道这三种方法中哪一种最适合我。他们都为我工作。有谁知道刷新、更新和重画之间的区别吗? 最佳答案 根据在线文档: Refresh - 重新绘制屏幕上的控件。 Call Refresh method
有什么办法吗 ICollectionView.Refresh() 或者 CollectionViewSource.GetDefaultView(args.NewValue).Refresh(); 在
这个问题已经有答案了: Updating address bar with new URL without hash or reloading the page [duplicate] (4 个回答)
我有一个 javascript 设置超时以在 10 秒后关闭 div,并且我想在 div 关闭时添加页面刷新。我正在使用的代码如下。 var container_close_sec = "1
我有一组具有以下名称的页面.... update1.php update2.php update3.php update4.php update5.php update6.php update7.ph
如果是则触发js函数。我可以使一个复选框保持选中状态,并在页面刷新时检查值并选中“checked”,并提交以下内容... checked="checked" /> 你都不记得触发js函数。 这是我的
我正在尝试刷新 php 脚本以在数据库更新时显示更新的内容。我首先构建了我的 php,然后刷新代码,然后合并它们。但是,脚本不会更新。有谁知道为什么吗? $(document).ready
当我要删除的节点扩展集合类型时,Grails中有一个错误阻止我使用removeFrom *。直接从关联中删除节点不会更新二级缓存。 A hasMany B 有什么方法可以使关联缓存手动无效或强制重新加
我正在使用 hibernate 和 mysql 来抽象一个数据库,以便在 java 驱动的网站中使用。我使用 hibernate 很好地解决了所有查询,但似乎无法弄清楚如何使用它进行更新、插入和删除,
如何通过调用 oncreateview 方法重新创建 fragment ?我有一个 fragment ,用于通过表单插入新数据,单击按钮后,我想通过删除在 EditText 中输入的数据来重新创建 f
当我从一个到另一个时,我试图刷新我的观点。我知道我应该将刷新代码放在 viewWillAppear 中,但我不知道该放什么代码。 你们能帮帮我吗? 谢谢! 最佳答案 在您看来,请调用 setNeeds
我正在开发 iPhone 应用程序并希望使用: CFStreamCreatePairWithSocketToHost(NULL, url, port, &serverReadStream, &serv
看到我已经创建了一个用于登录用户的脚本。而且我还添加了设置选项卡,以便用户可以编辑他们的设置!但是当我尝试它时,mysql 表中的数据发生了变化,但配置文件中显示的用户名和用户电子邮件保持不变!当我注
好的。这就是它的样子。 当我启动应用程序时,我从服务器收到的第一件事是数据: {name: "test", type: "checkbox" checked: true, } 这使得其中一个复选框
我是一名优秀的程序员,十分优秀!