为什么 php rename() 会损坏我的文件?

2024-01-05

我正在使用 plupload 将多个文件上传到我的服务器。使用这个,有一个参数'url:'upload.php'。 upload.php 在收到文件时捕获文件,如果文件被分块,可能会重新组合它们。收到完整文件后,它会将响应发送回原始页面,并显示绿色复选框图标。

在操作我上传的照片的所有主要代码之后,我在此页面添加了一些代码。我的计划是创建全尺寸图像的三个副本:lg、med 和small。我让这部分工作,但后来决定首先重命名原始文件以匹配我的命名方案。

我现在得到一个损坏的重命名文件,因此我的三个较小的图像也被损坏。

//get the original file info
$filepath = $_SERVER['DOCUMENT_ROOT'].'/uploads/';
$filepathinfo = pathinfo($filepath.$fileName);//fileName is used previously in the file

//rename original file to a unique name
$finding_id = 'xyz';
$file_name_new = uniqid($client_id . '-' . $finding_id . '-', true); //doesn't include extension
//rename($filepath.$fileName, $filepath.$file_name_new.'.'.$ext);
//copy($filepath.$fileName, $filepath.$file_name_new.'.'.$ext);

按原样,我得到一个文件,或者上传了多少个文件,字节大小与原始文件完全匹配,并且名称保持不变(除了删除某些字符)。

如果我仅取消注释重命名函数,我实际上会得到两个文件。原始照片的字节大小总计。较大的文件显示时底部有灰色部分。较小的文件根本不显示。

如果我仅取消注释复制功能,我会得到原始文件、原始文件和另一个文件的精确重命名副本,其大小和损坏与执行重命名的较大文件相同。

有任何想法吗?看起来应该很简单。


  1. 如果文件当前是通过 HTTP POST 上传的,则使用移动上传文件 http://php.net/manual/en/function.move-uploaded-file.php
  2. 如果您在该请求中的某个位置使用 fopen() 请求同一个文件,请确保调用 fclose()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 php rename() 会损坏我的文件? 的相关文章

  • Laravel 集成测试:如何断言一个 URL 已被调用但另一个 URL 没有

    我想测试一个向某个 URL 发出请求的控制器 例如 http example com api say hello 但它不会向另一个 URL 发出请求 例如 http example com api say bye bye 我想测试的控制器功
  • PDO SQLSRV 和 PDO MySQL 在获取 int 或 float 时返回字符串

    当您获取时 PDO MS SQL Server 和 PDO MySQL 都会返回一个字符串数组 即使列的 SQL 类型本应是数字类型 例如 int 或 float 我设法解决了这个问题 但我想了解为什么它们一开始就这样设计 是不是因为PDO
  • 如何在 Python 中包含 PHP 脚本?

    我有一个 PHP 脚本 news generator php 当我包含它时 它会抓取一堆新闻项并打印它们 现在 我在我的网站 CGI 中使用 Python 当我使用 PHP 时 我在 新闻 页面上使用了这样的内容 为了简单起见 我删掉了这个
  • PHP - Filter_var 替代方案?

    我构建了一个 php 脚本来输出以表单形式发布的数据 但遇到了问题 网站将运行的服务器运行 PHP 5 1 6 此版本的 PHP 不支持 filter var 我需要知道短期内的替代方案 最好是昨天 但在 Google 或 Stack Ov
  • 通过 __get() 通过引用返回 null

    快速规格 PHP 5 3 error reporting 1 the highest 我正在使用 get 通过引用技巧神奇地访问对象中任意深度的数组元素 快速示例 public function get key return isset t
  • 在 Laravel 5 中截断表

    描述 我有一个充满测试数据的表 有时 我想清除它以获取新数据 我可以在 DBMS 应用程序中执行截断 例如MySQL 工作台 但我试图在我的应用程序中实现它 Goal 创建一个按钮 单击时截断数据库中的表 这是我的步骤 1 声明一条路线 R
  • 负载平衡集群中的 PHP 会话 - 如何?

    好的 我得到了这个完全罕见的负载平衡 PHP 网站的独特场景 令人遗憾的是 它过去没有进行负载平衡 现在我们开始遇到问题 目前唯一的问题是 PHP 会话 当然 一开始没有人想到这个问题 因此 PHP 会话配置保留为默认值 因此 两台服务器都
  • 为什么验证不起作用并跳转到另一个页面?

    我写了一个customer display php来验证数据 到目前为止只有名字 但无论名字字段是否为空 网页都会跳转到customer search php并且没有更改数据库中的信息 为什么
  • 如何在类似 MVC 的页面中加载基于漂亮 URL 的类?

    我想请教一些关于如何解决这个问题的提示 我正在尝试构建自己的 MVC 网站 我了解了 URL 的基础知识 http example com blog cosplay cosplayer expo today 博客 gt 控制器cosplay
  • Magento - 检查 cms 页面

    我想通过 php 检查页面是否是 Magento 中的 cms page 我需要不同的 cms 页面面包屑 所以我尝试在一个条件下做到这一点 但我不知道如何或在哪里查看 到目前为止 这是我的 breadcrumbs phtml p some
  • fgetcsv 在特定行打开?

    有没有办法使用 fgetcsv 在特定行上打开 我有一个非常大的 csv 想通过 ajax 一次运行大约 100 行 我可以轻松停止 while 循环 但如何在特定行上打开 或者这是不可能的 从第 100 行开始读取没有简单的方法 但您可以
  • 使用 PHP 的 MySQL 连接字符串

    我正在尝试通过本地计算机连接到托管在我的服务器上的数据库 我的服务器有cPanel 11 它是一个典型的共享服务器 由CentOS提供支持 安装了PHP和MySQL 准确地说 我在同一台服务器上持有经销商帐户 我想在不同帐户或域之间访问数据
  • Joomla 页面中的自定义 php 代码

    我正在尝试将 Joomla 1 5 9 页面中的表源从页面中的硬编码 html 更改为从 SQL 数据库获取信息 执行此操作的正确方法是什么 创建一个新的模型或组件并以某种方式在页面中使用它 我找到了这些 http docs joomla
  • phpunit测试调用其他需要mock的类方法的方法

    我正在尝试创建一个非常标准的单元测试 在其中调用一个方法并断言它的响应 但是我正在测试的方法调用同一类中的另一个方法 该方法做了一些繁重的工作 我想模拟该方法 但仍按原样执行我正在测试的方法 仅使用从调用另一种方法返回的模拟值 我简化了示例
  • PHP 数组通过 JSON 转为 jquery 数组

    我有点困惑为什么以下不起作用 get php
  • 保存多对多关系,同步/附加不存在?

    我有以下两个多对多关系的模型 use Illuminate Database Eloquent Model class Permission extends Model The database table used by the mode
  • Laravel $request->file() 返回 null

    尝试在后端使用 Laravel 上传文件时遇到问题 Issue Laravel request gt file 方法返回 null Setup 我使用以下方法构建了一个 AJAX 请求超级代理人 https github com visio
  • 使用 php-ews(Exchange Web 服务)在特定日期后获取电子邮件

    在我的 PHP 脚本中 我需要弄清楚如何检索指定消息 ID 之后或特定日期之后的所有电子邮件 两者都可以 我只需要检索自上次抓取收件箱以来的新电子邮件 这个收件箱每天收到数千封电子邮件 而且我在 30 天内无法删除任何电子邮件 对于初始导入
  • php 数组中出现意外的 json 输出结构

    我正在尝试转换动态数据 如何从 PHP 获取此 JSON JSON 122240cb 253c 4046 adcd ae81266709a6 item 0 3 这就是我所做的 但它不起作用 PHP json array 122240cb 2
  • 一种无需 JavaScript 即可在 PHP 中确定浏览器宽度的方法?

    首先有吗 或者我必须使用javascript 我希望能够更改使用的 CSS 因此 frex 我可以为移动设备或其他设备加载较小的字体 不幸的是 仅使用 PHP 无法检测用户分辨率 如果您使用 Javascript 则可以在 cookie 中

随机推荐

  • 1 个 imageview android 上的多个动画

    我有 2 个动画已经可以使用了 我想同时淡出我的火车 补间我的火车 如果我执行其中 1 行 它就会起作用 但如果我尝试同时执行这两个操作 则只有 1 个可以工作 我在这里实在找不到解决办法 也许你能帮忙 final ImageView my
  • postgres 中的主键值可以为零吗?

    我的数据库中有一个表 其中一行的 ID 等于 0 零 主键是一个序列列 我习惯于看到以 1 开头的序列 那么 如果我将此 ID 保留为零 是否会出现问题 串行数据类型创建自动递增的整数列 因此 您应该能够向该列添加任何整数值 包括 0 来自
  • Telegram API:如何保持 ApiState 来保存登录状态

    我使用了来自此来源的 telegram api https github com voleon telegram trivia bot https github com voleon telegram trivia bot但我的问题是 如何
  • Laradock 不支持 mysql

    我无法理解如何让 Laradock 与 mysql 数据库一起正常工作 我已遵循 laradock 文档并安装了所有内容 使用以下命令启动容器 docker compose up d nginx mysql 我有这样的多项目版本布局 pro
  • 如何仅加载波形并等待用户单击“播放”以在 Wavesurfer-js 上下载音频?

    在我的服务器上 我使用 Audiowaveform 从音频文件生成 JSON 数据 在前端我使用Wavesurfer JS https wavesurfer js org根据之前的JSON数据绘制波形 问题是 在页面就绪时 Wavesurf
  • 按区域设置顺序获取工作日

    我想看看我们是否可以按区域设置排列工作日 例如 在美国语言环境中 我们将从星期日开始 而法国将从星期一开始 就日历而言 为了理解它 我正在制作一个闹钟应用程序 其中工作日的闹钟会在某些日子重复 以下是我所看到的工作日未按顺序排列的 new
  • 在 Python 中生成 py.test 测试

    先提问 如果有兴趣的话再解释 在 py test 的上下文中 如何从一小组测试函数模板生成一大组测试函数 就像是 models model1 model2 model3 data sets data1 data2 data3 def gen
  • R闪亮:如何阻止sliderInput标签点击导致滚动到页面顶部?

    我注意到 每当您单击任何 R Shiny 的标签时滑块输入控制时 窗口滚动到页面顶部 为了说明这一点 请将 sliderInput 放置在页面的更下方 例如 在大块文本或图表之后 然后单击其标签 页面滚动到顶部 我该如何抑制这种行为 我有一
  • 为什么 YouTube 在 iframe 中为嵌入视频添加 type= 属性?

    当访问 YouTube 时 它 会给出一个嵌入代码 例如 请注意 type text html 不是有效的 html iframe 标签没有这样的属性 谁能解释一下谷歌为什么这么说 我想这是出于某些实际原因 但我无法猜测是什么 PS您可以通
  • C# EventLog 无法访问日志

    下面是我在运行下面的代码时遇到的异常 未找到源 但无法搜索部分或全部事件日志 无法访问的日志 安全性 代码是 if EventLog SourceExists this EventLogSource 异常的内容对我来说有意义 这就是为什么它
  • Java 中的参数多态性是什么(举例)?

    据我了解 参数多态性是一种允许对各种数据 类型 进行统一操作的技术 我的知识正确吗 这个例子是参数多态吗 我相信这是因为 Animal talk 允许调用 talk 而不管特定的动物类型 猫或狗 public interface Anima
  • 尝试在 css 中重新创建加载 gif

    我正在尝试用纯 css 重新创建以下 gif CSS在这里 http codepen io anon pen FmCaL http codepen io anon pen FmCaL 目前仅支持 webkit chrome 我试图通过使用前
  • Java中如何并行添加两个数组?

    比如有两个巨大的 长度2 3百万 的数组float or double 需要它们很快加起来 怎么做 有这方面的库吗 采用固定线程池 线程数等于处理器核心数 有多少个线程就提交多少个任务 每个任务都会接收其需要求和的索引范围 在主线程中收集所
  • Firebase 数据库迁移

    来自 SQL 背景 我想知道如何在 Firebase 中进行数据库迁移 假设我在 firebase 中有以下数据 dateFrom 2015 11 11 timeFrom 09 00 现在前端客户端将以以下形式存储和期望数据 dateTim
  • 使用参数将表单提交到操作,Asp.Net.Core Mvc

    我正在尝试通过 ajax 在 asp net core 中提交排序下拉表单 操作还有其他参数 我也想执行这些参数 但表单不提交其他参数 我认为主要问题是剃须刀的形状部分 这是我行动的一部分 public IActionResult Prod
  • 可以在没有 UIWebView 的情况下运行 javascript 吗?

    是否可以运行一些 javascript 代码 也许有一个NSString作为输入 而不使用UIWebView 我想在单独的线程中运行此代码 因此 UIWebView 是不可能的 并且我真的不想渲染任何内容 只需返回结果即可 我没有尝试过 但
  • 如何从 OpenGL ES 中渲染的纹理读取像素

    我正在尝试从即时生成的纹理 RTT 渲染到纹理 中读取像素 我通过实施 Apple 建议的方法来拍摄此快照here http developer apple com library ios qa qa1704 index html 这对于呈
  • Java推断类型化HashSet的错误类型[重复]

    这个问题在这里已经有答案了 可能的重复 调用 TreeSet contains Long valueOf someLongValue 时出现 ClassCastException https stackoverflow com questi
  • Django settings.py 错误:不支持按文件名导入

    我在虚拟环境中运行 Django 使用 virtualenv 并且尝试添加自定义开发环境设置文件以在开发时简化应用程序配置 我的计划是用两行代码来完成此操作 if os environ get DEVELOPMENT None from l
  • 为什么 php rename() 会损坏我的文件?

    我正在使用 plupload 将多个文件上传到我的服务器 使用这个 有一个参数 url upload php upload php 在收到文件时捕获文件 如果文件被分块 可能会重新组合它们 收到完整文件后 它会将响应发送回原始页面 并显示绿