每个图像上传后都有两个不同的文件名(tmp_name和$ _FILES [“file”] [“name”])

时间:2014-05-09 06:43:43

标签: php html

我需要一些建议/帮助。我可以上传图片并成功移入(上传文件夹),但是,每个图片在上传后都有两个不同的文件名(tmp_name$_FILES["file"]["name"]),如果有人可以在这里提供帮助,我们将不胜感激。 。谢谢。

<form id="form" action="espaceupload.php" method="post" enctype="multipart/form-data">
<input id="uploadImage" type="file" accept="image/*" name="file" /><br>
<input id="button" type="submit" value="Preview">
</form>

<?php

$valid_exts = array('jpeg', 'jpg', 'png', 'gif'); // valid extensions
$max_size = 5000000 * 1024; // max file size
$path = "upload/" . $_FILES["file"]["name"]; // upload directory

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if( ! empty($_FILES['file']) ) {
$imagedata = addslashes (file_get_contents($_FILES['file']['tmp_name']));
$imagename =  ($_FILES['file']['tmp_name']);
$imagetype =($_FILES['file']['type']);
$imagesize= $_FILES['file']['size'];

// get uploaded file extension
$ext = strtolower(pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION));
// looking for format and size validity
if (in_array($ext, $valid_exts) AND $_FILES['file']['size'] < $max_size) {
$path = $path . uniqid(). '.' .$ext;
// move uploaded file from temp to uploads directory
if (move_uploaded_file($_FILES["file"]["tmp_name"],$path)) {


echo "<img src='$path' />";


$sql1= mysql_query("INSERT INTO dumimage(name,image,type,email,storename)values('$imagename','$imagedata','$imagetype','$user_check','$user_store')");

}
} else {
echo 'Invalid file!';
}
} else {
echo 'File not uploaded!';
}
} else {
echo 'Bad request!';
}

echo ($imagesize/1024).'KB';


?>

2 个答案:

答案 0 :(得分:1)

$_FILES['file']['name']包含已上传文件的名称,例如myImage.jpg。换句话说,这是上传文件的用户给出的名称。

$_FILES['file']['tmp_name']包含临时文件位置。这是PHP保存文件的地方,直到您将其移动到其他位置。例如/tmp/php/php1h4j1o

您应该阅读the documentation on PHP.net

答案 1 :(得分:0)

您需要在上传文件后阅读文件内容,而不是之前(并且不使用$_FILES['file']['tmp_name'])。

然后将其放在move_uploaded_file之后,就像这样:

if (move_uploaded_file($_FILES["file"]["tmp_name"],$path)) {
    $imagedata = addslashes(file_get_contents($path));
    // save to DB