[英]Upload a file using PHP
I want to upload a file to a given folder.我想将文件上传到给定的文件夹。
<?php
$folder = "upload/";
if (is_uploaded_file($HTTP_POST_FILES['filename']['tmp_name'])) {
if (move_uploaded_file($HTTP_POST_FILES['filename']['tmp_name'], $folder.$HTTP_POST_FILES['filename']['name'])) {
echo "File uploaded";
} else {
echo "File not moved to destination folder. Check permissions";
};
} else {s
echo "File is not uploaded";
};
?>
The error is:错误是:
Notice: Undefined variable: HTTP_POST_FILES in C:\wamp\www\sdg\import\ips.php on line 3
注意:未定义变量:第 3 行 C:\wamp\www\sdg\import\ips.php 中的 HTTP_POST_FILES
Below is one way to upload files, there are many other ways.下面是上传文件的一种方式,还有很多其他方式。
As @nordenheim said, $HTTP_POST_FILES
has been deprecated since PHP 4.1.0, thus not advisable to use so.正如@nordenheim 所说,
$HTTP_POST_FILES
自 PHP 4.1.0 起已被弃用,因此不建议使用。
PHP Code (upload.php) PHP 代码 (upload.php)
<?php
$target_dir = "upload/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file, PATHINFO_EXTENSION);
// Check if image file is a actual image or fake image
if (isset($_POST["submit"])) {
if ($target_file == "upload/") {
$msg = "cannot be empty";
$uploadOk = 0;
} // Check if file already exists
else if (file_exists($target_file)) {
$msg = "Sorry, file already exists.";
$uploadOk = 0;
} // Check file size
else if ($_FILES["fileToUpload"]["size"] > 5000000) {
$msg = "Sorry, your file is too large.";
$uploadOk = 0;
} // Check if $uploadOk is set to 0 by an error
else if ($uploadOk == 0) {
$msg = "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
$msg = "The file " . basename($_FILES["fileToUpload"]["name"]) . " has been uploaded.";
}
}
}
?>
HTML Code to start function启动函数的 HTML 代码
<form action="upload.php" method="post" id="myForm" enctype="multipart/form-data">
Select file to upload:
<input type="file" name="fileToUpload" id="fileToUpload">
<button name="submit" class="btn btn-primary" type="submit" value="submit">Upload File</button>
</form>
Hope this helps.希望这可以帮助。
PHP 4.1 introduced the superglobals . PHP 4.1 引入了超全局变量。 They replace the old, long-named arrays that contain the data extracted from the request.
它们替换包含从请求中提取的数据的旧的、长命名的数组。
$_FILES[]
replaced $HTTP_POST_FILES[]
, $_GET[]
replaced $HTTP_GET_VARS[]
and so on $_FILES[]
替换了$HTTP_POST_FILES[]
, $_GET[]
替换了$HTTP_GET_VARS[]
等等
For subsequent PHP 4 versions the old and the new arrays were available side by side.对于后续的 PHP 4 版本,旧数组和新数组可以并行使用。 PHP 5 by default disabled the generation of the old arrays and introduced the
php.ini
directive register_long_arrays
that could be used to re-enable the creation of the old arrays. PHP 5 默认禁用旧数组的生成,并引入了
php.ini
指令register_long_arrays
可用于重新启用旧数组的创建。
Since PHP 5.4 the old long-named arrays were removed completely and register_long_arrays
went together with them.从 PHP 5.4 开始,旧的长命名数组被完全删除,并且
register_long_arrays
与它们一起使用。
Conclusion: You are learning from a very old or very bad tutorial.结论:您正在从一个非常古老或非常糟糕的教程中学习。 Find a better one.
找一个更好的。
public static function uploadFile($filepath="upload",$existCheck=0,$uniq=0){
global $_FILES;
try {
// Undefined | Multiple Files | $_FILES Corruption Attack
// If this request falls under any of them, treat it invalid.
if (
!isset($_FILES['uploaded_file']['error']) ||
is_array($_FILES['uploaded_file']['error'])
) {
$result["status"]="fail";$result["errors"]=('Invalid parameters.');return $result;
}
// Check $_FILES['uploaded_file']['error'] value.
switch ($_FILES['uploaded_file']['error']) {
case UPLOAD_ERR_OK:
break;
case UPLOAD_ERR_NO_FILE:
$result["status"]="fail";$result["errors"]=('No file sent.');return $result;
case UPLOAD_ERR_INI_SIZE:
case UPLOAD_ERR_FORM_SIZE:
$result["status"]="fail";$result["errors"]=('Exceeded filesize limit.');return $result;
default:
$result["status"]="fail";$result["errors"]=('Unknown errors.');return $result;
}
// You should also check filesize here.
if ($_FILES['uploaded_file']['size'] > 1000000) {
$result["status"]="fail";$result["errors"]=('Exceeded filesize limit.');return $result;
}
// DO NOT TRUST $_FILES['uploaded_file']['mime'] VALUE !!
// Check MIME Type by yourself.
$finfo = new finfo(FILEINFO_MIME_TYPE);
if (false === $ext = array_search(
$finfo->file($_FILES['uploaded_file']['tmp_name']),
array(
'jpg' => 'image/jpeg',
'png' => 'image/png',
'gif' => 'image/gif',
),
true
)) {
$result["status"]="fail";$result["errors"]=('Invalid file format.');return $result;
}
if($uniq==0){
$temp=$filepath;
}
else{
$temp=$filepath."/".uniqid()."_".$_FILES['uploaded_file']['name'];
}
if ($existCheck==1 && file_exists($temp)) {
$result["status"]="fail";$result["errors"]=('Unknown errors.');return $result;
}
if(@copy($_FILES['uploaded_file']['tmp_name'], $temp)) {
return $result["status"]="success";
}
$result["status"]="fail";$result["errors"]=('Unknown errors.');return $result;
} catch (Exception $e) {
$result["status"]="fail";$result["errors"]= $e->getMessage();return $result;
}
}
First, write your html code like this, and don't forget to add enctype="multipart/form-data"
首先,像这样写你的html代码,不要忘记加上
enctype="multipart/form-data"
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Upload Image" name="submit">
</form>
Then create a file name called upload.php然后创建一个名为upload.php的文件名
<?php
$path = "form/";
$target_file = $path.basename($_FILES["fileToUpload"]["name"]);
$file=$_FILES['fileToUpload']['name'];
$result = move_uploaded_file($_FILES['fileToUpload']['tmp_name'],$target_file.$file);
if ($result) {
echo "file successfully uploaded";
}
else {
echo "please select your file";
}
You should try this你应该试试这个
$fileType = $_FILES['profileimage']['type'];
$fileName = $_FILES['profileimage']['name'];
$array = explode(".", $fileName);
$ext = $array[count($array)-1];
$imageAutoName = "profileimagehr".$rsinssupp.".".$ext;
if(!move_uploaded_file($_FILES['profileimage']['tmp_name'],'img/user/'.$imageAutoName))
{
$msg = "";
}
else
{
$iquery = "UPDATE tblname SET filane = '".$imageAutoName."' WHERE id = ".$rsinssupp."";
$obj->edit($iquery);
}
index.php索引.php
<?php
if(isset($_FILES['image'])){
$errors= array();
$file_name = $_FILES['image']['name'];
$file_tmp =$_FILES['image']['tmp_name'];
$extensions= array("jpeg","jpg","png");
move_uploaded_file($file_tmp,"images/".$file_name);
}
?>
<html>
<body>
<form action="" method="POST" enctype="multipart/form-data">
<input type="file" name="image" />
<input type="submit"/>
</form>
</body>
</html>
create one images folder in your project folder and run this file.在您的项目文件夹中创建一个图像文件夹并运行此文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.