上传php时重命名图像文件

2024-01-12

我有一个用于上传图像的表格。 index.html 将数据提交到 resizer.php。编码如下;

索引.html

<form action="resizer.php" method="post" enctype="multipart/form-data">
    Image: <input type="file" name="file" />
    <input type="submit" name="submit" value="upload" />
</form>

缩放器.php

<?php
require_once('imageresizer.class.php');
$imagename = "myimagename";

//Path To Upload Directory
$dirpath = "uploaded/";

//MAX WIDTH AND HEIGHT OF IMAGE
$max_height = 100;
$max_width = 100;

//Create Image Control Object - Parameters(file name, file tmp name, file type, directory path)
$resizer = new ImageResizer($_FILES['file']['name'],$_FILES['file']['tmp_name'],$dirpath);

//RESIZE IMAGE - Parameteres(max height, max width)
$resizer->resizeImage($max_height,$max_width);

//Display Image
$resizer->showResizedImage();


?>

imageresizer.class.php

<?php

    class ImageResizer{
        public $file_name;
        public $tmp_name;
        public $dir_path;




        //Set variables
        public function __construct($file_name,$tmp_name,$dir_path){
            $this->file_name = $file_name;
            $this->tmp_name = $tmp_name;
            $this->dir_path = $dir_path;
            $this->getImageInfo();
            $this->moveImage();
        }
        //Move the uploaded image to the new directory and rename
        public function moveImage(){
            if(!is_dir($this->dir_path)){
                mkdir($this->dir_path,0777,true);
            }
            if(move_uploaded_file($this->tmp_name,$this->dir_path.$this->file_name)){
                $this->setFileName($this->dir_path.$this->file_name);
            }

        }

        //Define the new filename
        public function setFileName($file_name){
            $this->file_name = $file_name;
            return $this->file_name;
        }

        //Resize the image function with new max height and width
        public function resizeImage($max_height,$max_width){
            $this->max_height = $max_height;
            $this->max_width = $max_width;

            if($this->height > $this->width){
                $ratio = $this->height / $this->max_height;
                $new_height = $this->max_height;
                $new_width = ($this->width / $ratio);
            }
            elseif($this->height < $this->width){
                $ratio = ($this->width / $this->max_width);
                $new_width = $this->max_width;
                $new_height = ($this->height / $ratio);
            }
            else{
                $new_width = $this->max_width;
                $new_height = $this->max_height;
            }


            $thumb = imagecreatetruecolor($new_width, $new_height);

            switch($this->file_type){
                case 1:
                    $image = imagecreatefromgif($this->file_name);
                    break;
                case 2:
                    $image = imagecreatefromjpeg($this->file_name);
                    break;
                case 3:
                    $image = imagecreatefrompng($this->file_name);
                    break;
                case 4:
                    $image = imagecreatefromwbmp($this->file_name);
            }

            imagecopyresampled($thumb, $image, 0, 0, 0, 0, $new_width, $new_height, $this->width, $this->height);

            switch($this->file_type){
                case 1:
                    imagegif($thumb,$this->file_name);
                    break;
                case 2:
                    imagejpeg($thumb,$this->file_name,100);
                    break;
                case 3:
                    imagepng($thumb,$this->file_name,0);
                    break;
                case 4:
                    imagewbmp($thumb,$this->file_name);
            }

            imagedestroy($image);
            imagedestroy($thumb);
        }

        public function getImageInfo(){
            list($width, $height, $type) = getimagesize($this->tmp_name);
            $this->width = $width;
            $this->height = $height;
            $this->file_type = $type;

        }

        public function showResizedImage(){
            echo "<img src='".$this->file_name." />";
        }


        public function onSuccess(){
            header("location: index.php");
        }

    }
?>

一切正常。文件以其原始文件名上传。但我想将文件重命名为“myimagename”,这是 resizer.php 中的一个变量。我怎样才能使这成为可能?

提前致谢... :)

巴塞拉弗雷德


尝试这个:

    public function moveImage(){
        global $imagename;
        if(!is_dir($this->dir_path)){
            mkdir($this->dir_path,0777,true);
        }
        if(move_uploaded_file($this->tmp_name,$this->dir_path.$imagename)){
            $fileParts = explode('.', $this->tmp_name);
            $this->setFileName($this->dir_path.$imagename.'.'.$fileParts[count($fileParts)-1]);
        }

    }

Edit:为您添加了扩展程序;-)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

上传php时重命名图像文件 的相关文章

  • xampp openssl 调用 openssl_pkey_new() 时出错;

    所以我试图让 openssl 在我的 Windows 安装的 xampp 1 7 3 上工作 它是用 OpenSSL 0 9 8l 构建的 这只是我第二次在 amp 安装上安装 openssl 但第一次进展顺利 这是在同一台机器上的 wam
  • 如何检查文件是否为php?

    我想检查文件是否具有扩展名 php 如果有的话我会把它包括在内 有人可以帮我进行正则表达式检查吗 thanks 通常您不使用正则表达式 以下是一种流行的方法 extension pathinfo filename PATHINFO EXTE
  • 实现 PHP 单例:静态类属性还是静态方法变量?

    所以 我总是像这样实现一个单例 class Singleton private static instance null public static function getInstance if self instance null se
  • 如何对“2-1”这样的字符串进行数学计算以产生“1”?

    我只是想知道 PHP 是否有一个函数可以接受像这样的字符串2 1并产生它的算术结果 或者我必须手动执行此操作explode 获取算术运算符左侧和右侧的值 我知道这个问题很老了 但我昨晚在寻找不太相关的东西时遇到了它 而且这里的每个答案都很糟
  • 搜索数组中的最高键/索引

    我怎样才能得到highest key index在一个数组中php questions tagged php 我知道如何为价值观做这件事 例如 我想从这个数组中得到10 as an integer value arr array 1 gt
  • PHP 7 上可以指定多个返回类型吗?

    我有一些可以返回的方法两种返回类型之一 我正在使用利用 MCV 的框架 因此重构这几个函数尤其没有吸引力 是否可以声明返回类型返回其中之一而在其他情况下失败 function test if this gt condition false
  • 如何在时事通讯中发送图像?

    谁能告诉我如何将图像作为时事通讯的主体部分发送 我如何从后端添加任何图像 以便当我向订阅者发送新闻通讯时 我想要显示的图像作为邮件的主体部分 实际上我想说的是 我有一个可以输入文本的表单 并且该文本在时事通讯中效果很好 现在我也想在表单中添
  • 设置了 @version $Id$ 的 SVN Checkout

    我在 Subversion 中进行开发 在每个 PHP 文件的顶部都有以下注释块
  • iOS11视觉框架映射所有人脸特征点

    我正在使用视觉框架并使用以下代码获取所有里程碑点 if let allFaceLandmarks landmarks allPoints print allFaceLandmarks 但无法找到这些点的映射 例如右眼的索引号 寻找相同的东西
  • WordPress 子主题 style.css 不起作用

    我创建了一个与父主题格式相同的文件结构 我的父主题称为 Alpine Alpine 中有一个functions php 和style css 文件 似乎没有任何其他 style css 文件 我创建了一个名为 Alpine child 的目
  • PHP 编译器 openssl 错误

    在提问之前 我必须说我已经tried堆栈和其他地方的每个类似问题都失败了 我无法使用composer因为这个错误 requires ext openssl gt the requested PHP extension openssl is
  • 使用以太坊 RPC 获取代币余额?

    如何通过以太坊RPC显示代币余额 id 0 data array data jsonrpc 2 0 data id id data method eth call data params from gt 0x0 to gt 0x0 data
  • 循环遍历数据数组并打印“递增”字母

    我需要循环遍历数据数组并为每个数组值打印一个 递增 字母 我知道我可以这样做 array array 11 33 44 98 1 3 2 9 66 21 45 array to loop through letters array a b
  • 如何从 php 中的字符串中删除 unicode 字符 (LEFT_TO_RIGHT_MARK)

    我试图在将字符串编码为 JSON 之前从字符串中删除从左到右标记 u200e 和从右到左标记 u200f 以下两者似乎都不起作用 s mb ereg replace u200e s s preg replace u200e u s s pr
  • Yii2 - 如何自动加载自定义类?

    我创建了以下自定义类 我想在我的 Yii2 应用程序中使用它 common components helper CustomDateTime php namespace common components helper class Cust
  • 使用 Facebook API 在朋友的墙上发布帖子

    我希望我的 Facebook 应用程序能够获取使用该应用程序的用户的 ID 并在他们的一位朋友的墙上找到该 ID 发布的帖子 我更喜欢使用个人 ID 的示例 而不是迭代所有朋友 我认为两个用户很可能都必须向应用程序提供权限才能执行此操作 这
  • Matlab:掩码/创建一个知道其原点且具有一定半径的圆形 roi

    只是一个简单的问题 我有一张图像 并且提取了某个点 特征 我知道每个帧中该点的坐标 说 x1 和 y1 我需要一个圆形 ROI 形式 该点在图像上具有我选择的半径 我尝试了 impoly 和 roipoly 当我知道图像中的要点时 不知道如
  • PHP:switch 与 if [重复]

    这个问题在这里已经有答案了 哪种形式更有效率 这个 switch var case 1 break case 2 break 或者这个 if var 1 elseif var 2 在性能方面 性能方面完全无关 As PHPBench htt
  • 如何在 PHP 中去除字符串中的所有空格? [复制]

    这个问题在这里已经有答案了 我怎么能够strip remove all spaces of a string in PHP 我有一个string like string this is my string 输出应该是 thisismystr
  • 如何找到数组中的最小数字并返回该数组的主索引?

    我有一个如下所示的数组 我想找到 diff 索引中数字最小的数组 所以在这种情况下 我想取回数组 7 我需要的只是数组编号 即 7 而不是任何其他信息 我知道我可以使用 array column 轻松找到最小的数字 但如何返回整个数组索引

随机推荐

  • 使用 AWS SDK 以 IAM 用户身份登录

    谁能帮助我了解如何使用 AWS SDK 以 IAM 用户身份登录 我正在使用适用于 Java 的 AWS 开发工具包 并且一直在寻找合适的 API 来以 IAM 用户身份登录 但我无法做到这一点 我能够传递访问密钥和密钥以使用 SDK 登录
  • 如何从 Firebase Firestore set() 调用返回承诺?

    这是我的问题的后续https stackoverflow com questions 54100270 google translate api and firebase firestore are killing each other 道
  • Spring Boot 2.x 的性能问题?

    我最近将Web应用程序中使用的Spring Boot版本从1 5版本更新到2 1版本 当我对其进行负载测试时 我的运行时间从 25 分钟缩短到 35 分钟 我知道这是一个广泛的问题 但是有谁知道为什么应用程序在升级 Spring Boot
  • 在 javascript 中填写表单的通用方法

    我正在寻找一种真正通用的方法来使用 javascript 基于参数字符串 填写 表单 例如 如果我有这个表格
  • R 通过 Hoovermode 绘图显示 x 轴值

    按照此question https stackoverflow com questions 70576618 r plotly bar chart positive negative values different color secon
  • Qt update() 不起作用

    我有一个问题 update 函数QGraphicsItem不起作用 我想做的是 当我移动圆圈时 其他QGraphicsItem 同时 roundrect 改变颜色 这是一个例子 我想做的事情 圆 cpp void CircleItem mo
  • 为什么我的 Google 网络字体是像素化的?

    我正在尝试在一个简单的网站中使用谷歌字体 我正在使用的标签是 CSS 是 body padding 0 text align center line height 180 background 1a2426 color f7f7f7 fon
  • EF 6 代码优先存储过程 - 只读

    我搜索了一些帖子 但都没有找到 我首先使用 EF6 代码尝试从数据库中已设置的存储过程获取结果 我的应用程序很简单 它从两个不同的服务器获取数据 执行一些业务逻辑 然后向用户显示 我可以使用 edmxfile Fine 它将函数映射到 xm
  • ImportError:无法从“google.cloud”(未知位置)导入名称“pubsub_v1”

    我正在尝试将 pubsub v1 导入云函数中 但是当我尝试将其部署到GCP上时 出现了如标题所示的问题 requirements txt 文件与 main py 文件位于同一目录中 这是requirements txt中的内容 googl
  • Excel:有没有一个函数可以返回满足匹配条件的范围? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 给定一个值与后续行 同一列上 进行比较 并返回直到该值第一次更改的行的范围 Example A 1 cat 2 cat 3 cat 4 dog 5 c
  • 具有 CuDNNLSTM 层的 Keras 模型无法在生产服务器上运行

    我使用 AWS p3 实例通过 GPU 加速训练以下模型 x CuDNNLSTM 128 return sequences True inputs x Dropout 0 2 x x CuDNNLSTM 128 return sequenc
  • JavaScript 中有语音或语音就绪事件吗? [复制]

    这个问题在这里已经有答案了 我在 Google Chrome 上尝试了以下操作 它会打印出来0声音 然后再次打印0我的电脑上有声音 但如果我重新加载页面以重新开始 并将最后一行更改为setTimeout foo 1000 那么第一行会打印出
  • 函数printf()打印退格问题

    有两个程序 它们得到不同的结果 但我不明白为什么 这是第一个 int main printf 12345 fflush stdout printf b b fflush stdout return 0 结果是 123 然后是第二个 int
  • 在单击按钮之前不要对引导表实施过滤器控制

    我提出的问题的后续行动earlier https stackoverflow com questions 64720472 add button on header th to hide and show filter control in
  • 将自定义类型转换注入 .NET 库类

    我想通过C 中的Convert ChangeType实现两个库类之间的转换 我无法改变这两种类型 例如 Guid 和 byte 之间的转换 Guid g new Guid object o1 g byte b byte Convert Ch
  • 在 Laravel 5.x 中组织 trans() 本地化文件的好策略有哪些?

    这是一个关于方法论和建议实践的问题 我知道它并没有严格依附于框架 甚至不是 PHP 答案可能是 这取决于你 但我关心的是最佳实践和方法 因为通常存在针对特定环境的最佳方法 我想知道哪些是最佳实践键命名为了trans 的函数Laravel 5
  • 在 Linux 中禁用网络摄像头自动对焦

    我正在 beagleboard 的嵌入系统中工作 源代码是Python的 但我从OpenCV导入库来进行图像处理 实际上 我使用的是 Logitech c910 网络摄像头 它是一款出色的摄像头 但它具有自动对焦功能 我想知道是否可以从 P
  • FreeRTOS 匈牙利表示法 [重复]

    这个问题在这里已经有答案了 我是 RTOS 和 C 编程的新手 而且我仍在习惯 C 的良好实践 因此 我打开了一个使用 FreeRTOS 的项目 我注意到操作系统文件使用匈牙利表示法 我知道一点符号 但面临一些新的 标准 FreeRTOS
  • 在mongoDB的一个文档中插入多个json文件

    我有个问题 但是如何在一个文档集合中插入许多 json 文件呢 我有一个与 mongoDB 连接的 ruby 脚本 它为每个 ID 产品生成 json 文件 在 mongo 中我应该想要一个像这样的结构 Id document s name
  • 上传php时重命名图像文件

    我有一个用于上传图像的表格 index html 将数据提交到 resizer php 编码如下 索引 html