还有一件事,我如何将-6ren">
gpt4 book ai didi

php - 允许特定文件类型?上传

转载 作者:太空宇宙 更新时间:2023-11-04 14:07:12 26 4
gpt4 key购买 nike

我正在创建一个图片 uploader ,但我不知道该怎么做,只有文件类型可以是 .jpg 所以我问你,你知道吗?

这是我到目前为止得到的:

    <?php
session_start();
if($_SESSION['username']) {
$target_path = "users/$username/";

$target_path = $target_path . basename( $_FILES['uploadedfile']['name']);

if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
echo "The file ". basename( $_FILES['uploadedfile']['name']).
"has been uploaded";
header("Location: user.php");
} else{
echo "There was an error uploading the file, please try again!";
}
}
else {
echo "Only members can be here. Register <a href='index.php'>here</a>";
}
?>

还有一件事,我如何将上传的文件重命名为:“profile.jpg”?

最佳答案

这里有一些重要的事情需要考虑:

首先,永远不要依赖提供的文件扩展名。如果需要,我可以上传扩展名为 .jpg 的 php 文件。诚然,我可能需要做更多工作才能真正让它作为 php 文件在您的服务器上执行,但它肯定不是有效图像。

如果上传成功,$_FILES[ 'uploadedfile' ][ 'type' ] 将保留请求提供的 mime 类型。但是,这也不应该被信任,因为它也可能被篡改。

确定上传的文件是否真的是 jpeg 类型图像的更可靠方法是使用函数 getimagesizegetimagesize() 如果它不是有效图像,将返回 false;如果它将文件识别为图像,将返回包含图像信息的数组。数组的索引 2 将保存一个对应于 one of these constants 的值以 IMAGETYPE_ 开头。

$info = getimagesize( $_FILES[ 'uploadedfile' ]['tmp_name'] );
if( $info !== false )
{
// file is an image to begin with

if( $info[ 2 ] == IMAGETYPE_JPEG )
{
// file appears to be a valid jpeg image
}
}

这是一种老式的方法,据我所知,它是可靠的。

我相信,根据平台 (Windows/*nix) 和版本 (< 5.3, >= 5.3),有更可靠的方法来确定文件的实际 mime 类型。稍后我会看看能为您找到什么。

编辑:
我忘记了重命名部分。

简单地替换这个:

$target_path = $target_path . basename( $_FILES['uploadedfile']['name']);

...用这个:

$target_path = $target_path . 'profile.jpg';

换句话说,当您使用 move_uploaded_file() 移动文件时,第二个参数将是新路径(包括新文件名)。

关于php - 允许特定文件类型?上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7616994/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com