php上传文件错误怎么解决

<html>
<body>
<form enctype="multipart/form-data" action="upload.php" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
Choose a file to upload: <input name="uploaded_file" type="file" />
<input type="submit" value="Upload" />
</form>
</body>
</html>

有一些规则需要建设时遵循HTML表单。首先,请确保该窗体使用POST方法。第二,形

式需要以下属性:字符编码=“多重/表单数据”。它指定的内容类型时使用的信息提

交给伺服器。如果没有这些要求,您的文件上传不了。

另一个需要注意的是隐藏的表单字段名为MAX_FILE_SIZE设置的值。某些Web浏览器实

际上反映了这个领域,也不会允许用户上载文件超过这个数字(字节)更大。您应该

将此值设置为配合最大上传大小,在php.ini文件中设置。这是一套与中

upload_max_filesize,默认值是2MB的。但它仍然不能保证你的脚本将不会转交了尺

寸较大的文件。危险的是,攻击者将尝试向您发送一个请求几个大文件,并填写了文

件系统,也就是PHP存储解码文件。设置在php.ini的post_max_size的指令文件的最大

尺寸,你要(必须大于中upload_max_filesize)。默认值为10MB的。此指令控制的所

有要求,在一个允许的POST数据最大大小。另外,还要确保在你的php.ini文件

file_uploads设置为On。

至少,有一个在输入标记属性看:类型=“文件”。它是用来指定为文件选择控制输入

元素。这提供了一个文件的URI的地方,则需要键入一个“浏览”按钮,可作为替代的

URI输入使用。

在用户进入一个文件的URI,并点击提交按钮的文件的副本将被发送到服务器和用户将

被重定向到upload.php。此PHP文件将处理表单数据。

返回页首

处理表单数据(PHP代码)

当文件被上传和PHP创建了一个文件的临时副本,并建立了超全局变量$ _FILES数组,

包含有关文件的信息。对于每个文件,有5个数据。我们已上传字段命名

为'uploaded_file',所以会存在以下数据:

变量$ _FILES [“uploaded_file”] [“name”]从用户的机器上载的文件的原名称
变量$ _FILES [“uploaded_file”] [“type”]的上传文件的MIME类型(如果浏览器

提供的类型)
变量$ _FILES [“uploaded_file”] [“size”]的以字节为单位上传的文件大小
变量$ _FILES [“uploaded_file”] [“tmp_name”],在该文件暂时存储在服务器上

的位置
变量$ _FILES [“uploaded_file”] [“error”]错误代码从文件上传结果
下面的例子接受一个上传的文件并保存在上载目录中。它允许根据350Kb上传只有JPEG

图像。该代码本身,是相当清楚的,但我们会作出一些解释。有一个例子在外观和保

存此为upload.php PHP代码。
<?php
//Сheck that we have a file
if((!empty($_FILES["uploaded_file"])) && ($_FILES['uploaded_file']['error']

== 0)) {
//Check if the file is JPEG image and it's size is less than 350Kb
$filename = basename($_FILES['uploaded_file']['name']);
$ext = substr($filename, strrpos($filename, '.') + 1);
if (($ext == "jpg") && ($_FILES["uploaded_file"]["type"] == "image/jpeg")

&&
($_FILES["uploaded_file"]["size"] < 350000)) {
//Determine the path to which we want to save this file
$newname = dirname(__FILE__).'/upload/'.$filename;
//Check if the file with the same name is already exists on the

server
if (!file_exists($newname)) {
//Attempt to move the uploaded file to it's new place
if ((move_uploaded_file($_FILES['uploaded_file']

['tmp_name'],$newname))) {
echo "It's done! The file has been saved as: ".$newname;
} else {
echo "Error: A problem occurred during file upload!";
}
} else {
echo "Error: File ".$_FILES["uploaded_file"]["name"]." already

exists";
}
} else {
echo "Error: Only .jpg images under 350Kb are accepted for upload";
}
} else {
echo "Error: No file uploaded";
}
?>
在此之前的上载您需要的文件,以确定文件是否真的上传任何东西。之后我们检查上

传的文件,JPEG图像,其大小小于350Kb的。接下来,我们确定的道路,这是我们要保

存此文件,并检查是否已经存在一个服务器上的这些文件的名称。当所有检查通过,

我们将文件复制到一个永久的位置使用move_upload_file()函数。此功能也证实该

文件你要过程,是一个合法的文件从用户上传结果。如果该文件上传成功,那么相应

的消息将出现。

注意:要确保PHP已经允许读取和写入临时文件中保存的位置是您要复制文件的目录。

这个例子其实很简单,它的提出是为了演示如何使用PHP上传文件。例如,您可以添加

新的条件,并允许上传GIF和PNG图像,或任何文件,您需要其他种类。如果您是本教

程使用PHP不熟悉可能是一个很好的起点。

<input type="file" name="浏览" id="浏览" value="浏览">
这个地方改为:
<input type="file" name="file" id="file" value="浏览">
试试

你这个结果是上传成功了的啊,文件信息都明确的告诉你了,你在程序里面处理就可以了。
Array ( [name] => http_imgload1.jpg [type] => image/pjpeg [tmp_name] => C:\\WINDOWS\\Temp\\php1D5.tmp [error] => 0 [size] => 39205 )
name: 文件的原名字和格式
type:文件的meta值
tmp_name:文件上传后存在服务器的绝对路径,你可以用copy函数把文件复制到你想要存放的目录里面
size:文件的大小,单位是字节


我也是刚刚遇到了你的问题。找到了一段参考资料,希望能对你有所帮助。

  Windows和Linux的编码是不一样的,在Windows环境下,调用PHP的函数时参数如果是utf-8编码会出现错误,比如 move_uploaded_file()、filesize()、readfile()等,这些函数在处理上传、下载时经常会用到,调用时可能会出现下面的错误:
  
  Warning: move_uploaded_file()[function.move-uploaded-file]:failed to open stream: Invalid argument in ...
  
  Warning: move_uploaded_file()[function.move-uploaded-file]:Unable to move '' to '' in ...
  
  Warning: filesize() [function.filesize]: stat failed for ... in ...
  
  Warning: readfile() [function.readfile]: failed to open stream: Invalid argument in ..
  
  在Linux环境下用gb2312编码虽然不会出现这些错误,但保存后的文件名出现乱码导致无法读取文件,这时可先将参数转换成操作系统识别的编码,编码转换可用mb_convert_encoding(字符串,新编码,原编码)或iconv(原编码,新编码,字符串),这样处理后保存的文件名就不会出现乱码,也可以正常读取文件,实现中文名称文件的上传、下载。

~

#13749967868# “你没有选择上传的文件或选择的文件大小超出限制”错误怎么解决 - ******
#利郝# 修改php.ini中的几个配置upload_max_filesize = 2M 修改为 upload_max_filesize = 20M (自由定义)post_max_size = 8M 修改 post_max_size = 20M (自由定义)修改后重启下apache或者iis

#13749967868# php 为什么上传文件设了路径就出错啊 - ******
#利郝# $savepath="d\php\\"; 路径格式好像不对吧,你用的是“\”说明你用的是windows系统,那么“d\php\\”的意思应该是D盘下的php文件夹,我虽然用的是linux但是windows下的路径格式应该是"d:\php\"这样吧.由于我们写的程序不总是在一台机器上测试,所以最好用相对路径.还有一点linux下的路径格式只支持“/”而windows下“/”跟"\"都支持所以最好用“/”(为了更好的实现夸平台^_^).

#13749967868# PHP文件本地显示正常,上传到服务器,出现异常,如下图 - ******
#利郝# 这个有多种可能 有时候注释 有时候是php文件前边多了个符号之类的 尤其是zend框架

#13749967868# PHP上传图片的问题 - ******
#利郝# 这个也太大概了....你可以输出下数组检查,像下面一样 <?phpprint_r($_FILES);?> 然后错误就明显一些 -------------------------------------那应该是空间上的问题,检查目录权限,PHP.ini里面的upload的各项设置,最后实在不行换成两个文件来上传,一个简单的表单,一个专门的处理文件!

#13749967868# php上传出错只能上传gif文件. - ******
#利郝# $_FILES ["file"] ["type"] == "image/php") || ($_FILES ["file"] ["type"] == "image/jpg") || ($_FILES ["file"] ["type"] == "image/gif") || ($_FILES ["file"] ["type"] == "image/pjpeg") 看下你的if条件,可以传jpg、gif、pjpeg这三个格式,第一个FILES ["file"] ["type"] == "image/php") ...是什么来的.....

#13749967868# php 其值为 7,文件写入失败 - ******
#利郝# 你的服务器应该是linux,向文件写入有权限限制,要更改文件属性,你可以用ftp软件把执行写入的文件的属性改为777

#13749967868# php 上传excel 表格 PHPExcel类,出现错 - ******
#利郝# ZipArchive library is not enabled:出现这个错误说明是程序在调用'ZipArchive' 这个类的时候没有成功,原因是由于在安装php的时候没有增加php zip的支持(非zlib).请在php.ini找到extension=php_zip.dll并把前面的分号去掉(如果没有,请添...

#13749967868# WIN7下PHP上传问题 - ******
#利郝# $path应该是完整的路径名包含文件名称另外 这个路径是相对于站点根目录的比如 $path="/uploads/test.jpg";确认你的站点根目录下有 uploads 这个文件夹因为它自己是不会建立文件夹的自已用函数判断一下,在move_uploaded_file之前建一...

#13749967868# PHP文件上传报错, - ******
#利郝# 你把变量都var_dump 出来就知道哪错了目前的代码完全没问题

  • 用PHP上传文件,大于2M时出错,有什么办法避免
  • 答:修改php.ini file_uploads = on ;是否允许通过HTTP上传文件的开关。默认为ON即是开 upload_tmp_dir ;文件上传至服务器上存储临时文件的地方,如果没指定就会用系统默认的临时文件夹 upload_max_filesize = 100m ;望文...

  • php 上传文件问题
  • 答:服务器问题,环境配置问题

  • php 上传文件 出错
  • 答:把上传的文件的文件名,改成全英文的试试。

  • PHP 上传文件错误常见问题和解决方法
  • 答:注意表单的Form标签中一定要添加 enctype=”multipart/form-data”文件才能上传。你在后台php页面输出看看F_ILE看看能不能接收到值.

  • 解决nginx+php-fpm无法上传文件问题
  • 答:1、文件上传时存放文件的临时目录。必须是 PHP 进程所有者用户可写的目录。如果未指定则 PHP 使用系统默认值php.ini文件中upload_tmp_dir用来说明PHP上传的文件放置的临时目录。要想上传文件,得保证服务器没有关闭临时文件和...

  • thinkphp3.2 多文件上传时 上传错误提示
  • 答:$info = $upload->upload(); if(!$info) {// 上传错误提示错误信息 $this->error($upload->getError()); }else{// 上传成功 $this->success('上传成功!'); } ...

  • php文件上传,提示移动文件失败
  • 答:上传文件: <?php //print_r($_FILES["upfile"]); if(is_uploaded_file($_FILES['upfile']['tmp_name'])){ $upfile=$_FILES["upfile"]; //获取数组里面的值 $name=$upfile["name"];//上传文件的文件...

  • PHP问题,在本地测试时正确的,但是上传至服务器后就不正确了。我是把把...
  • 答:可以检查下你的php版本 你使用了匿名函数,这个特性只有php 5.3以上版本才支持 你可以检查一下本地和服务器上的php版本对比一下

  • thinkphp5上传文件方法不存在
  • 答:thinkphp5上传文件方法不存在是代码错误的原因。在move复制文件前,对文件名进去中文转码,转换成gb2312,复制完成,转换回utf-8即可。

  • php不能上传文件,[error] => 2
  • 答:UPLOAD_ERR_OK 值:0; 没有错误发生,文件上传成功。UPLOAD_ERR_INI_SIZE 值:1; 上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。UPLOAD_ERR_FORM_SIZE 值:2; 上传文件的大小超过了 HTML 表单中 ...

    为传递更多家电数码信息,若有事情请联系
    数码大全网