php文件上传(php如何实现上传进度条)

:暂无数据 2026-06-24 08:30:09 1

php文件上传(php如何实现上传进度条)

大家好,关于php文件上传很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于php如何实现上传进度条的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

本文目录

php如何实现上传进度条


php实现上传进度条的方法:首先向服务器端上传一个文件;然后用PHP将此次文件上传的详细信息存储在session当中;接着用Ajax周期性的请求一个服务器端脚本;最后通过浏览器端的Javascript显示更新进度条即可。
推荐:《PHP视频教程》
实现文件上传进度条基本是依靠JS插件或HTML5的File API来完成,其实PHP配合ajax也能实现此功能。
PHP手册对于session上传进度是这么介绍的:
当 session.upload_progress.enabled INI 选项开启时,PHP 能够在每一个文件上传时监测上传进度。 这个信息对上传请求自身并没有什么帮助,但在文件上传时应用可以发送一个POST请求到终端(例如通过XHR)来检查这个状态
当一个上传在处理中,同时POST一个与INI中设置的session.upload_progress.name同名变量时,上传进度可以在$_SESSION中获得。 当PHP检测到这种POST请求时,它会在$_SESSION中添加一组数据, 索引是 session.upload_progress.prefix 与 session.upload_progress.name连接在一起的值。 通常这些键值可以通过读取INI设置来获得,例如
《?php
$key = ini_get("session.upload_progress.prefix") . ini_get("session.upload-progress.name");
var_dump($_SESSION);
?》
通过将$_SESSION设置为TRUE,还可以取消一个正在处理中的文件上传。 当在同一个请求中上传多个文件,它仅会取消当前正在处理的文件上传和未处理的文件上传,但是不会移除那些已经完成的上传。 当一个上传请求被这么取消时,$_FILES中的error将会被设置为 UPLOAD_ERR_EXTENSION。
session.upload_progress.freq 和 session.upload_progress.min_freq INI选项控制了上传进度信息应该多久被重新计算一次。 通过合理设置这两个选项的值,这个功能的开销几乎可以忽略不计。
注意:为了使这个正常工作,web服务器的请求缓冲区需要禁用,否则 PHP可能仅当文件完全上传完成时才能收到文件上传请求。 已知会缓冲这种大请求的程序有Nginx。下面原理介绍:
当浏览器向服务器端上传一个文件时,PHP将会把此次文件上传的详细信息(如上传时间、上传进度等)存储在session当中。然后,随着上传的进行,周期性的更新session中的信息。这样,浏览器端就可以使用Ajax周期性的请求一个服务器端脚本,由该脚本返回session中的进度信息;浏览器端的Javascript即可根据这些信息显示/更新进度条了。
php.ini需配置以下选项
session.upload_progress.enabled = "1"
session.upload_progress.cleanup = "1"
session.upload_progress.prefix = "upload_progress_"
session.upload_progress.name = "PHP_SESSION_UPLOAD_PROGRESS"
session.upload_progress.freq = "1%"
session.upload_progress.min_freq = "1"其中enabled控制upload_progress功能的开启与否,默认开启;
cleanup 则设置当文件上传的请求提交完成后,是否清除session的相关信息,默认开启,如果需要调试$_SESSION,则应该设为Off。
prefix 和 name 两项用来设置进度信息在session中存储的变量名/键名。
freq 和 min_freq 两项用来设置服务器端对进度信息的更新频率。合理的设置这两项可以减轻服务器的负担。
在上传文件的表单中,需要为该次上传设置一个标识符,并在接下来的过程中使用该标识符来引用进度信息。
具体的,在上传表单中需要有一个隐藏的input,它的name属性为php.ini中 session.upload_progress.name 的值;它的值为一个由你自己定义的标识符。如下:
代码如下:
《input type="hidden" name="《?php echo ini_get(’session.upload_progress.name’); ?》" value="test" /》接到文件上传的表单后,PHP会在$_SESSION变量中新建键,键名是一个将session.upload_progress.prefix的值与上面自定义的标识符连接后得到的字符串,可以这样得到:
代码如下:
$name = ini_get(’session.upload_progress.name’);
$key = ini_get(’session.upload_progress.prefix’) . $_POST;
$_SESSION这个变量的结构是这样的:
array (
’upload_progress_test’ =》 array (
’start_time’ =》 1491494993, // 开始时间
’content_length’ =》 1410397, // POST请求的总数据长度
’bytes_processed’ =》 1410397, // 已收到的数据长度
’done’ =》 true, // 请求是否完成 true表示完成,false未完成
’files’ =》 array (
0 =》 array (
’field_name’ =》 ’file1’,
’name’ =》 ’test.jpg’,
’tmp_name’ =》 ’D:wampmpphpE181.tmp’,
’error’ =》 0,
’done’ =》 true,
’start_time’ =》 1491494993,
’bytes_processed’ =》 1410096,
),
),
),
);这样,我们就可以使用其中的 content_length 和 bytes_processed 两项来得到进度百分比。
原理介绍完了,下面我们来完整的实现一个基于PHP和Javascript的文件上传进度条。
上传表单index.php
《?php session_start(); ?》
《!DOCTYPE html》
《html lang="zh-CN"》
《head》
《meta charset="utf-8"》
《title》PHP(5.4) Session 上传进度 Demo《/title》
《meta name="viewport" content="width=device-width, initial-scale=1.0"》
《meta name="keywords" content=""/》
《meta name="description" content=""/》
《meta name="author" content=""》
***隐藏网址***
《style type="text/css"》
body{
font-size:1em;
color:#333;
font-family: "宋体", Arial, sans-serif;
}
h1, h3, h3, h4, h5, h6{
font-family: "宋体", Georgia, serif;
color:#000;
line-height:1.8em;
margin:0;
}
h1{ font-size:1.8em; }
#wrap{
margin-top:15px;
margin-bottom:50px;
background:#fff;
border-radius:5px;
box-shadow:inset 0 0 3px #000,
0 0 3px #eee;
}
#header{
border-radius:5px 5px 0 0;
box-shadow:inset 0 0 3px #000;
padding:0 15px;
color:#fff;
background: #333333;
}
#header h1{
color:#fff;
}
#article{
padding:0 15px;
}
#footer{
text-align:center;
border-top:1px solid #ccc;
border-radius:0 0 5px 5px;
}
.progress {
width: 100%;
border: 1px solid #4da8fe;
border-radius: 40px;
height: 20px;
position: relative;
}
.progress .labels {
position: relative;
text-align: center;
}
.progress .bar {
position: absolute;
left: 0;
top: 0;
background: #4D90FE;
height: 20px;
line-height:20px;
border-radius: 40px;
min-width: 20px;
}
.report-file {
display: block;
position: relative;
width: 120px;
height: 28px;
overflow: hidden;
border: 1px solid #428bca;
background: none repeat scroll 0 0 #428bca;
color: #fff;
cursor: pointer;
text-align: center;
float: left;
margin-right:5px;
}
.report-file span {
cursor: pointer;
display: block;
line-height: 28px;
}
.file-prew {
cursor: pointer;
position: absolute;
top: 0;
left:0;
width: 120px;
height: 30px;
font-size: 100px;
opacity: 0;
filter: alpha(opacity=0);
}
.container{
padding-left:0;
padding-right:0;
margin:0 auto;
}
《/style》
《/head》
《body》
《p id="wrap" class="container"》
《p id="header"》
《h1》Session上传进度 Demo《/h1》
《/p》
《p id="article"》
《form id="upload-form" action="upload.php" method="POST" enctype="multipart/form-data" style="margin:15px 0"
target="hidden_iframe"》
《input type="hidden" name="《?php echo ini_get("session.upload_progress.name"); ?》" value="test"/》
《p class="report-file"》
《span》上传文件?《/span》《input tabindex="3" size="3" name="file1" class="file-prew" type="file" onchange="document.getElementById(’textName’).value=this.value"》
《/p》
《input type="text" id="textName" style="height: 28px;border:1px solid #f1f1f1" /》
《p》
《input type="submit" class="btn btn-default" value="上传"/》
《/p》
《/form》
《p id="progress" class="progress" style="margin-bottom:15px;display:none;"》
《p class="bar" style="width:0%;"》《/p》
《p class="labels"》0%《/p》
《/p》
《/p》 《!-- #article --》
《p id="footer"》
《p》 《/p》
《/p》
《/p》《!-- #wrap --》
《iframe id="hidden_iframe" name="hidden_iframe" src="about:blank" style="display:none;"》《/iframe》
***隐藏网址***
《script type="text/javascript"》
function fetch_progress() {
$.get(’progress.php’, {’《?php echo ini_get("session.upload_progress.name"); ?》’: ’test’}, function (data) {
var progress = parseInt(data);
$(’#progress .labels’).html(progress + ’%’);
$(’#progress .bar’).css(’width’, progress + ’%’);
if (progress 《 100) {
setTimeout(’fetch_progress()’, 500);
} else {
$(’#progress .labels’).html(’100%’);
}
}, ’html’);
}
$(’#upload-form’).submit(function () {
$(’#progress’).show();
//图片比较小,看不出进度条加载效果,初始设33%
$(’#progress .labels’).html(’33%’);
$(’#progress .bar’).css(’width’, ’33%’);
setTimeout(’fetch_progress()’, 500);
});
《/script》
《/body》
《/html》注意表单中的session.upload_progress.name隐藏项,值设置为了test。表单中仅有一个文件上传input,如果需要,你可以添加多个。
这里需要特别注意一下表单的target属性,这里设置指向了一个当前页面中的iframe。这一点很关键,通过设置target属性,让表单提交后的页面显示在iframe中,从而避免当前的页面跳转。因为我们还得在当前页面显示进度条呢。
上传文件upload.php
《?php
/**
* 上传文件
*/
if(is_uploaded_file($_FILES)){
//unlink($_FILES);
$fileName = ’pic_’ . date(’YmdHis’) . mt_rand(10000,99999);
$ext = substr($_FILES, ’.’));
move_uploaded_file($_FILES, $fileName . $ext);
}ajax获取上传进度progress.php
《?php
/**
* AJAX获取上传文件进度
*/
session_start();
$i = ini_get(’session.upload_progress.name’);
//session.upload_progress.name = "PHP_SESSION_UPLOAD_PROGRESS"
$key = ini_get("session.upload_progress.prefix") . $_GET;
//session.upload_progress.prefix = "upload_progress_" . ’test’
if (!empty($_SESSION)) {
$current = $_SESSION

php如何设置文件上传路径


php设置文件上传路径的方法:首先创建PHP示例文件;然后修改服务端处理代码;最后通过“move_uploaded_file”移动文件到目标路径即可。
推荐:《PHP视频教程》
PHP文件上传路径
假设上传的文件name值为upload
《input type="file" name="upload" /》服务端处理代码如下:
if(isset($_FILES) { // 文件存在且不报错
$fileName = $_FILES; // 获取文件
$fileExtension = pathinfo($fileName); // 获取文件路径信息
$fileExtension = $fileExtension; // 获取文件后缀
$time = time(); // 根据时间戳区分
$destinationPath = "./../upload/"; // 目标文件夹
$newFileName = $destinationPath.$time.".".$fileExtension; // 完整的url
if(move_uploaded_file($_FILES, $newFileName)) { // 移动文件到目标路径
echo("文件移动成功");
} else {
die("文件路径出错");
}

}

用PHP控制FTP文件上传

利用PHP,你总是可以有多种方式来完成某个特定的任务。我们就拿文件上传举个例子。当然了,你可以按照传统的方式来使用HTTP文件上传,把文件直接传输到Web服务器磁盘上。回龙观电脑培训认为你还可以用更加奇异的方式上传,用FTP协议两步就完成上传:从你的本地硬盘到Web服务器,然后再到FTP服务器。

PHP在本机同时支持FTP和HTTP上传,所以你可以根据自己应用程序的设计需要进行最佳的选择。使用PHP的FTP函数进行文件传输几乎与使用传统的FTP客户端相同——你会看到连函数的名字都和标准的FTP命令类似。

关于HTTP文件上传的文章已经多得满天飞了,这就是为什么本文有必要把注意力放在基于FTP的文件上传上了(但是在后面给出的例子中,两种方式你都会看到)。要注意的是,本教程假设你已经安装好了PHP/Apache,而且HTTP文件上传和FTP的函数都已经激活了。

第一步:确信你拥有连接/上传到FTP服务器的权限

PHP的FTP函数需要客户端-服务器连接,所以你需要在进行文件上传之前登录到目标服务器上。你的第一项任务是确信你已经拥有了完成这项任务的信任书。这一步可能看起来是理所当然的,但是你会惊奇地发现有多少开发人员忘了这么做,结果后来浪费大量的时间来解决因此而出现的问题。

php如何实现ftp上传


php实现ftp上传的方法:首先通过“ftp_connect”函数连接FTP服务器 ;然后使用username和password登录;最后通过“ftp_put()”函数实现ftp上传即可。
推荐:《PHP视频教程》
1. 使用PHP操作FTP-用法
《?php

// 联接FTP服务器
$conn = ftp_connect(ftp.server.com);

// 使用username和password登录
ftp_login($conn, “john”, “doe”);

// 获取远端系统类型
ftp_systype($conn);

// 列示文件
$filelist = ftp_nlist($conn, “.”);

// 下载文件
ftp_get($conn, “data.zip”, “data.zip”, FTP_BINARY);

// 关闭联接
ftp_quit($conn);

//初结化一个FTP联接,PHP提供了ftp_connect()这个函数,它使用主机名称和端口作为参数。在上面的例子里,主机名字为 “ftp.server.com”;如果端口没指定,PHP将会使用“21”作为缺省端口来建立联接。

//联接成功后ftp_connect()传回一个handle句柄;这个handle将被以后使用的FTP函数使用。
$conn = ftp_connect(ftp.server.com);

//一旦建立联接,使用ftp_login()发送一个用户名称和用户密码。你可以看到,这个函数ftp_login()使用了 ftp_connect()函数传来的handle,以确定用户名和密码能被提交到正确的服务器。
ftp_login($conn, “john”, “doe”);

// close connection
ftp_quit($conn);

//登录了FTP服务器,PHP提供了一些函数,它们能获取一些关于系统和文件以及目录的信息。
ftp_pwd()

//获取当前所在的目录
$here = ftp_pwd($conn);

//获取服务器端系统信息ftp_systype()
$server_os = ftp_systype($conn);

//被动模式(PASV)的开关,打开或关闭PASV(1表示开)
ftp_pasv($conn, 1);

//进入目录中用ftp_chdir()函数,它接受一个目录名作为参数。
ftp_chdir($conn, “public_html”);

//回到所在的目录父目录用ftp_cdup()实现
ftp_cdup($conn);

//建立或移动一个目录,这要使用ftp_mkdir()和ftp_rmdir()函数;注意:ftp_mkdir()建立成功的话,就会返回新建立的目录名。
ftp_mkdir($conn, “test”);

ftp_rmdir($conn, “test”);

//上传文件,ftp_put()函数能很好的胜任,它需要你指定一个本地文件名,上传后的文件名以及传输的类型。比方说:如果你想上传 “abc.txt”这个文件,上传后命名为“xyz.txt”,命令应该是这样:
ftp_put($conn, “xyz.txt”, “abc.txt”, FTP_ASCII);

//下载文件:PHP所提供的函数是ftp_get(),它也需要一个服务器上文件名,下载后的文件名,以及传输类型作为参数,例如:服务器端文件为his.zip,你想下载至本地机,并命名为hers.zip,命令如下:
ftp_get($conn, “hers.zip”, “his.zip”, FTP_BINARY);

//PHP提供两种方法:一种是简单列示文件名和目录,另一种就是详细的列示文件的大小,权限,创立时间等信息。

//第一种使用ftp_nlist()函数,第二种用ftp_rawlist().两种函数都需要一个目录名做为参数,都返回目录列做为一个数组,数组的每一个元素相当于列表的一行。
$filelist = ftp_nlist($conn, “.”);

//函数ftp_size(),它返回你所指定的文件的大小,使用BITES作为单位。要指出的是,如果它返回的是 “-1”的话,意味着这是一个目录
$filelist = ftp_size($conn, “data.zip”);

?》2. FTP上传类 (ftp.php)
《?php
/********************************************
* MODULE:FTP类
*******************************************/
class ftp
{
public $off; // 返回操作状态(成功/失败)
public $conn_id; // FTP连接

/**
* 方法:FTP连接
* @FTP_HOST -- FTP主机
* @FTP_PORT -- 端口
* @FTP_USER -- 用户名
* @FTP_PASS -- 密码
*/
function __construct($FTP_HOST,$FTP_PORT,$FTP_USER,$FTP_PASS)
{
$this-》conn_id = @ftp_connect($FTP_HOST,$FTP_PORT) or die("FTP服务器连接失败");
@ftp_login($this-》conn_id,$FTP_USER,$FTP_PASS) or die("FTP服务器登陆失败");
@ftp_pasv($this-》conn_id,1); // 打开被动模拟
}

/**
* 方法:上传文件
* @path -- 本地路径
* @newpath -- 上传路径
* @type -- 若目标目录不存在则新建
*/
function up_file($path,$newpath,$type=true)
{
if($type) $this-》dir_mkdirs($newpath);
$this-》off = @ftp_put($this-》conn_id,$newpath,$path,FTP_BINARY);
if(!$this-》off) echo "文件上传失败,请检查权限及路径是否正确!";
}

/**
* 方法:移动文件
* @path -- 原路径
* @newpath -- 新路径
* @type -- 若目标目录不存在则新建
*/
function move_file($path,$newpath,$type=true)
{
if($type) $this-》dir_mkdirs($newpath);
$this-》off = @ftp_rename($this-》conn_id,$path,$newpath);
if(!$this-》off) echo "文件移动失败,请检查权限及原路径是否正确!";
}

/**
* 方法:复制文件
* 说明:由于FTP无复制命令,本方法变通操作为:下载后再上传到新的路径
* @path -- 原路径
* @newpath -- 新路径
* @type -- 若目标目录不存在则新建
*/
function copy_file($path,$newpath,$type=true)
{
$downpath = "c:/tmp.dat";
$this-》off = @ftp_get($this-》conn_id,$downpath,$path,FTP_BINARY);// 下载
if(!$this-》off) echo "文件复制失败,请检查权限及原路径是否正确!";
$this-》up_file($downpath,$newpath,$type);
}

/**
* 方法:删除文件
* @path -- 路径
*/
function del_file($path)
{
$this-》off = @ftp_delete($this-》conn_id,$path);
if(!$this-》off) echo "文件删除失败,请检查权限及路径是否正确!";
}

/**
* 方法:生成目录
* @path -- 路径
*/
function dir_mkdirs($path)
{
$path_arr = explode(’/’,$path); // 取目录数组
$file_name = array_pop($path_arr); // 弹出文件名
$path_p = count($path_arr); // 取层数

foreach($path_arr as $val) // 创建目录
{
if(@ftp_chdir($this-》conn_id,$val) == FALSE)
{
$tmp = @ftp_mkdir($this-》conn_id,$val);
if($tmp == FALSE)
{
echo "目录创建失败,请检查权限及路径是否正确!";
exit;
}
@ftp_chdir($this-》conn_id,$val);
}
}

for($i=1;$i《=$path_p;$i++) // 回退到根
{
@ftp_cdup($this-》conn_id);
}
}

/**
* 方法:关闭FTP连接
*/
function close()
{
@ftp_close($this-》conn_id);
}
}
// class class_ftp end事例:
/************************************** 测试 ***********************************
$ftp = new ftp(’222.13.67.42’,21,’hlj’,’123456’); // 打开FTP连接
$ftp-》up_file(’aa.wav’,’test/13548957217/bb.wav’); // 上传文件
//$ftp-》move_file(’aaa/aaa.php’,’aaa.php’); // 移动文件
//$ftp-》copy_file(’aaa.php’,’aaa/aaa.php’); // 复制文件
//$ftp-》del_file(’aaa.php’); // 删除文件
$ftp-》close(); // 关闭FTP连接
//******************************************************************************/3. PHP用FTP函数创建目录
《?php
// create directory through FTP connection
function FtpMkdir($path, $newDir) {

$server=’ftp.yourserver.com’; // ftp server
$connection = ftp_connect($server); // connection


// login to ftp server
$user = "me";
$pass = "password";
$result = ftp_login($connection, $user, $pass);

// check if connection was made
if ((!$connection) || (!$result)) {
return false;
exit();
} else {
ftp_chdir($connection, $path); // go to destination dir
if(ftp_mkdir($connection,$newDir)) { // create directory
return $newDir;
} else {
return false;
}
ftp_close($conn_id); // close connection
}

}
?》

php无法上传文件怎么办

解决方法:
1、检查网站目录的权限。
上传目录是否有写入权限
(学习视频推荐:java视频教程)
2、php.ini配置文件
php.ini中影响上传的有以下几处:
file_uploads 是否开启 on 必须开启
post_max_size= 8MPHP接受的POST数据最大长度。此设定也影响到文件上传。要上传大文件,该值必须大于"upload_max_filesize",如果配置脚本中激活了内存限制,"memory_limit"也会影响文件上传。
一般说来,"memory_limit"应该比"post_max_size"要大。
upload_max_filesize = 2M允许上传的文件的最大尺寸
upload_tmp_dir =C:\\windows\temp文件上传时存放文件的临时目录,必须是PHP进程用户可写的目录,如果未指定则PHP使用系统默认值。
default_socket_timeout = 60socket超时,单位是秒
max_execution_time = 30每个脚本最大允许执行时间, 按秒计。默认为30秒。
这个参数有助于阻止劣质脚本无休止的占用服务器资源。
注: "max_execution_time"仅影响脚本本身的运行时间。
任何其它花费在脚本运行之外的时间,如用system()/sleep()函数的使用、数据库查询、文件上传等都不包括在内。
在安全模式下,你不能用ini_set()在运行时改变这个设置
max_input_time=60每个脚本接受输入数据的最大允许时间(POST GET upload),按秒计
memory_limit = 128M设置脚本最大能申请到的内存空间大小,防止劣质脚本消耗完服务器的内存资源。要使用此指令必须在编译的时候激活。因此 configure 一行中应该包括:--enable-memory-limit,如果不需要任何内存上的限制,必须将其设为 -1。
自php4.3.2 起,当设置了memory_limit后,memory_get_usage()函数将变为可用
3、upload_tmp_dir 目录权限
如果php配置没问题,那问题有可能出在upload_tmp_dir设定的目录权限问题。加入IIS_WPG除完全控制外的权限,users的读写权限,NETWORK SERVER除完全控制外的权限。
4、如果起用了ZEND,看Temp文件夹中是否有
ZendOptimizer.MemoryBase@SYSTEM和ZendOptimizer.MemoryBase@NETWORKSERVICE,如果没有,就建立它。
5、window guests来宾权限

php怎么上传文件保存到本地



php怎么上传文件保存到本地?
php作为后端接受上传的图片还是很简单的,需要用到FILES,当客户端或web端向后端post图片时,我们可以用FILES,当客户端或web端向后端post图片时,我们可以用_FILE接收图片,然后存储在临时缓冲区中,最后用move_upload_file函数保存在本地。使用Wampserver服务器,则缓存文件放在tmp文件夹下。
//html代码
***隐藏网址***
***隐藏网址***
《head》
***隐藏网址***
《title》Insert title here《/title》
《/head》
《body》
《form action="./uploadheadimg.php" method="post" enctype="multipart/form-data"》
《!-- 《input type="hidden" name="MAX_FILE_SIZE" value=’176942’ /》 --》
请选择您要上传的文件:《input type="file" name=’myfile’ /》
《!-- 《input type="file" name="myFile" accept="image/jpeg,image/gif,image/png"/》《br /》 --》
《input type="submit" value="上传文件" /》
《/form》
《/body》
《/html》html界面展示
2.//uploadheadimg.php代码
《?php
$imgname = $_FILES;
$tmp = $_FILES;
$filepath = ’photo/’;
if(move_uploaded_file($tmp,$filepath.$imgname.".png")){
echo "上传成功";
}else{
echo "上传失败";
}
?》在代码中需要修改$filepath变量的值,其值建立一个文件夹,用于存放上传的文件。
推荐:《PHP教程》

PHP编程语言中的常见的$_FILES系统函数用法有:
$_FILES 显示客户端文件的原名称。
$_FILES 文件的 MIME 类型,例如"image/gif"。
$_FILES 已上传文件的大小,单位为字节。
$_FILES 储存的临时文件名,一般是系统默认。
$_FILES 该文件上传相关的错误代码。
以下为使用$_FILES 出现错误代码的意思:
0; 文件上传成功。
1; 超过了文件大小php.ini中即系统设定的大小。
2; 超过了文件大小
MAX_FILE_SIZE 选项指定的值。
3; 文件只有部分被上传。
4; 没有文件被上传。
5; 上传文件大小为0。

怎么修改php上传文件文件大小限制



怎么修改php上传文件文件大小限制
修改PHP上传文件大小限制的方法
1. 一般的文件上传,除非文件很小.就像一个5M的文件,很可能要超过一分钟才能上传完.
但在php中,默认的该页最久执行时间为 30 秒.就是说超过30秒,该脚本就停止执行.
这就导致出现 无法打开网页的情况.这时我们可以修改 max_execution_time
在php.ini里查找
max_execution_time默认是30秒.改为
max_execution_time = 00表示没有限制
2. 修改 post_max_size 设定 POST 数据所允许的最大大小。此设定也影响到文件上传。
php默认的post_max_size 为2M.如果 POST 数据尺寸大于 post_max_size $_POST 和 $_FILES superglobals 便会为空.
查找 post_max_size .改为
post_max_size = 150M3. 很多人都会改了第二步.但上传文件时最大仍然为 8M.
为什么呢.我们还要改一个参数upload_max_filesize 表示所上传的文件的最大大小。
查找upload_max_filesize,默认为8M改为
upload_max_filesize = 100M另外要说明的是,post_max_size 大于 upload_max_filesize 为佳.
4.上传报413错误,
产生该错误的原因,客户端发送的实体主体部分比服务器能够或者希望处理的要大。 一般情况下我们看不到这个状态码。 因为浏览器不会发送太大的数据给网站,但是服务器间的接口交互可能会出现该问题。
nginx出现这个问题的原因是请求实体太长了。一般出现这种情况是Post请求时Body内容Post的数据太大了,如上传大文件过大、POST数据比较多。
解决方法:
***隐藏网址***
client_max_body_size 20m;推荐:《PHP教程》

php多图上传怎么保存路径



1、创建一个test数据库,并在里面创建一张名为list的数据表,用于保存图片的路径,path是保存图片路径的字段
2、新建一个html文件,命名为index.html,在该文件里创建一个表单form,并在里面创建上传的按钮。需要注意的是上传按钮要加上multiple,允许多张图片一起上传。form表单的action设置为提交至服务器的upload.php文件
3、创建upload.php文件,用于接收上传的图片并保存于数据库。首先,连接数据库。代码如下:
4、编写代码创建保存上传图片的文件夹picture,与upload.php在同一目录下。
5、编写代码,将接收到的图片使用move_uploaded_file()方法上传,因为是多张图片,采用foreach方法遍历上传的多张图片分别上传,并插入数据库。
6、在浏览器运行index.html文件,执行上传图片的操作,例如,上传3张图片。
执行的结果:
PHP上传多张图片,图片上传至文件夹,图片路径保存于数据库中。
推荐教程:PHP视频教程

php如何实现图片上传功能


php实现图片上传功能的方法:首先创建存储图片的文件夹;然后创建HTML部分;接着创建“uploadHandler.php”文件;最后将文件的图片格式与数组中的元素进行比较并实现上传即可。
推荐:《PHP视频教程》
PHP 中的图片上传操作
??前端编程中,有时需要允许浏览者上传某张图片,这样的功能我们可以通过 PHP 来实现。
一. 创建存储图片的文件夹
??在这里,我们创建文件夹 “ file ” 来存放用户上传的图片,此时文件夹是空的,文件夹创建地址可以自己选择,但是最好建立在方便使用的位置。
二. 创建 HTML 部分(uploadfile.html)
??这里我们使用了 HTML 的 form 表单标签,以及表单中的
《input type="file"》来选择图片文件
《input type="submit"》来提交图片相关信息代码如下:
《!DOCTYPE html》
《html》
《head》
《meta charset="UTF-8"》
《title》《/title》
《/head》
《body》
《form action="uploadHandler.php" method="post" enctype="multipart/form-data"》
Upload Img:《input type="file" name="img"/》
《input type="submit" value="Upload"/》
《/form》
《/body》
《/html》注意:
??1. form 表单里的 action 连接到之后将会创建的处理图片上传的 .php 文件。
??2. 在 form 的属性中必须注明enctype="multipart/form-data"。enctype 属性规定在将表单数据发送到服务器之前如何对其进行编码。multipart/form-data不对字符编码。当使用有文件上传控件的表单时,该值是必需的。
??3. 在这里,我们使用的是 post 方法。
三.创建 PHP 部分(uploadHandler.php)
1. 原理
??我们创建一个 php 文件,在其中只输入
《?php var_dump($_FILES); ?》??那么我们会打印到一个相应的数组arr(1)。
??arr(1)的数组结构为:
array(1) {
=》 array(5) {
=》 string(**) "AAAAAAA.jpg" // 图片名
=》 string(10) "image/jpeg" // 图片格式
=》 string(45) "/Applications/XAMPP/xamppfiles/temp/phpVZQY0m" // 图片缓存地址
=》 int(0) // 上传图片错误数
=》 int(124246) // 图片大小
}
}??在 array 数组下有一个元素 下是一个二维数组,这个二维数组有五个元素,分别为:name / type / tmp_name / error / size。
??通过这几个属性我们得到了一个图片的基本信息,下一步我们要通过对这几个基本属性进行判断而将图片存进文件夹。
2. 实际操作
??进行如下判断:
error :提示错误?
error :下一步?
????_type:提示错误?
????_type:下一步?
??????_type:提示错误?
??????_type:下一步?
??如果满足如上的判断,那么我们认为这张图片是可以保存的。
??为避免图片命名的重复,我们使用时间戳概念,拼接成一个新的文件名,让每张图片的命名都是唯一的。
??且我们可以创建一个数组,数组内的元素是各种图片格式,将文件的图片格式与数组中的元素进行比较,不是我们认可的图片格式将不予保存。
代码如下:
《?php
// 接收文件
var_dump($_FILES); // 区别于$_POST、$_GET
print_r($_FILES);
$file = $_FILES;
// 先判断有没有错
if ($file == 0) {
// 成功
// 判断传输的文件是否是图片,类型是否合适
// 获取传输的文件类型
$typeArr = explode("/", $file);
if($typeArr== "image"){
// 如果是图片类型
$imgType = array("png","jpg","jpeg");
if(in_array($typeArr, $imgType)){ // 图片格式是数组中的一个
// 类型检查无误,保存到文件夹内
// 给图片定一个新名字 (使用时间戳,防止重复)
$imgname = "file/".time().".".$typeArr;
// 将上传的文件写入到文件夹中
// 参数1: 图片在服务器缓存的地址
// 参数2: 图片的目的地址(最终保存的位置)
// 最终会有一个布尔返回值
$bol = move_uploaded_file($file, $imgname);
if($bol){
echo "上传成功!";
} else {
echo "上传失败!";
};
};
} else {
// 不是图片类型
echo "没有图片,再检查一下吧!";
};
} else {
// 失败
echo $file;
};
?》四. 上传图片
??此时,如果各项均符合要求,那么在 file 文件夹内就存有了我们上传的图片。上传成功!

php文件上传代码怎么写



php文件上传代码怎么写
在初学php的时候,我们无法理解php文件上传的代码,以及上传的逻辑,以下代码从初学者的角度编写,希望对大家有帮助!
需要用到的知识:
超级全局数组:$_FILES
$_FILES的值是:客户端文件系统的文件名称
$_FILES的值是:客户端传递的文件类型
$_FILES的值是:文件的字节大小
$_FILES的值是:文件被上传后在服务器存储的临时全路径
$_FILES的值是:文件上传的错误代码
存储在$_FILES中的值
值为0: 表示没有发生任何错误
值为1: 表示上传文件的大小超出了约定值。文件大小的最大值在PHP配置文件中指定的,指令是:upload_max_filesize
值为2: 表示上传文件大小超过了HTML表单隐藏域属性的MAX_FILE_SIZE元素所指定的最大值
值为3: 表示文件只被部分上传
值为4:表示没有上传任何文件
值为6: 表示找不到临时文件夹
值为7: 表示文件写入失败
错误值对应常量
UPLOAD_ERR_OK : 对应值0
UPLOAD_ERR_INI_SIZE : 对应值1
UPLOAD_ERR_FORM_SIZE : 对应值2
UPLOAD_ERR_PARTIAL : 对应值3
UPLOAD_ERR_NO_FILE : 对应值4
UPLOAD_ERR_NO_TMP_DIR : 对应值6
UPLOAD_ERR_CANT_WRITE : 对应值7
upload.html 代码如下
《!DOCTYPE html》
《html lang="en"》
《head》
《meta charset="UTF-8"》
《title》图片上传《/title》
《/head》
《body》
《form action="upload.php" method="post" enctype="multipart/form-data"》
《input type="file" name="pic"/》
《!--通过表单限制上传文件的大小 一定要在上传按钮前 大小以字节为主--》
《input type="hidden" name="MAX_FILE_SIZE" value="8388608"/》
《input type="submit" name="sub" value="上传" /》
《/form》
《/body》
《/html》upload.php 代码如下
《?php
//var_dump($_FILES);
//exit;
//判断是否是文件上传
$file = $_FILES;
//第一个pic 是input 中的name值
if(is_uploaded_file($file))
{
//声明允许上传的文件类型
$allowType = ;
//正在上传的文件的类型
$type = $file;
// echo $type;
//判断类型是否是允许的类型
if(!in_array($type,$allowType))//检查数组中是否存在某个值,返回布尔型
{
exit(’上传类型有误’);
}
//判断文件上传的大小
if($file 》 1024 * 1024 * 8) //以字节为主 1024*1024是1M
{
exit(’上传的文件太大’);
}
//设置新文件名
$filename = date(’YmdHis’,strtotime(’now’)).rand(1000,9999);
//获取上传文件的后缀名
$name = $file;
//得到文件名字符串
$filestr = explode(’.’,$name);
$ext = array_pop($filestr);
//拼接新文件名
$newfilename = $filename.’.’.$ext;
//拼接上传文件的路径
$path = ’./uploads/’;
//绝对路径
$abspath = $path.$newfilename;
if(move_uploaded_file($file,$abspath))
{
echo ’上传成功’;
}else{
echo ’上传失败’;
}
} 更多PHP相关知识,请访问PHP中文网!

php如何实现上传进度条的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于php如何实现上传进度条、php如何实现上传进度条的信息别忘了在本站进行查找哦。

php文件上传(php如何实现上传进度条)

本文编辑:admin

更多文章:


win7更新和安全在哪里(win7 64位 windows update更新存储文件位置在哪里 啊)

win7更新和安全在哪里(win7 64位 windows update更新存储文件位置在哪里 啊)

本篇文章给大家谈谈win7更新和安全在哪里,以及win7 64位 windows update更新存储文件位置在哪里 啊对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,

2026年9月7日 18:50

阿里旺旺苹果手机版(苹果iPhone 4手机能用阿里旺旺吗)

阿里旺旺苹果手机版(苹果iPhone 4手机能用阿里旺旺吗)

“阿里旺旺苹果手机版”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看阿里旺旺苹果手机版(苹果iPhone 4手机能用阿里旺旺吗)!

2026年9月7日 17:50

qq号批发发卡网24小时(想卖qq去哪个平台)

qq号批发发卡网24小时(想卖qq去哪个平台)

“qq号批发发卡网24小时”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看qq号批发发卡网24小时(想卖qq去哪个平台)!

2026年9月7日 17:20

纸飞机app聊天软件下载(纸飞机app中文版下载社交)

纸飞机app聊天软件下载(纸飞机app中文版下载社交)

其实纸飞机app聊天软件下载的问题并不复杂,但是又很多的朋友都不太了解纸飞机app中文版下载社交,因此呢,今天小编就来为大家分享纸飞机app聊天软件下载的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年9月7日 14:30

raysource软件手机版下载(ray的这个软件你有吗)

raysource软件手机版下载(ray的这个软件你有吗)

今天给各位分享ray的这个软件你有吗的知识,其中也会对ray的这个软件你有吗进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年9月7日 13:40

启动盘制作完成后怎么放入系统(u盘启动盘制作好了要怎么做才能装系统)

启动盘制作完成后怎么放入系统(u盘启动盘制作好了要怎么做才能装系统)

大家好,启动盘制作完成后怎么放入系统相信很多的网友都不是很明白,包括u盘启动盘制作好了要怎么做才能装系统也是一样,不过没有关系,接下来就来为大家分享关于启动盘制作完成后怎么放入系统和u盘启动盘制作好了要怎么做才能装系统的一些知识点,大家可以

2026年9月7日 13:30

电脑游戏免费软件(可以不花钱玩电脑游戏的,软件有哪些)

电脑游戏免费软件(可以不花钱玩电脑游戏的,软件有哪些)

本篇文章给大家谈谈电脑游戏免费软件,以及可以不花钱玩电脑游戏的,软件有哪些对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年9月7日 12:50

cpu天梯图2022年11月(2022手机cpu性能排行榜天梯图)

cpu天梯图2022年11月(2022手机cpu性能排行榜天梯图)

大家好,关于cpu天梯图2022年11月很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于2022手机cpu性能排行榜天梯图的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位

2026年9月7日 10:10

hotbox(hotbox raye歌词)

hotbox(hotbox raye歌词)

各位老铁们,大家好,今天由我来为大家分享hotbox,以及hotbox raye歌词的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

2026年9月7日 05:00

win如何设置开机密码(win10怎么设置开机密码)

win如何设置开机密码(win10怎么设置开机密码)

大家好,今天小编来为大家解答以下的问题,关于win如何设置开机密码,win10怎么设置开机密码这个很多人还不知道,现在让我们一起来看看吧!

2026年9月7日 02:50

最近更新

热门文章

dessert(dessert是什么意思)
2026-05-03 12:45:03 浏览:7
标签列表