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

标签 php rename plupload

我正在使用 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 上传的,请使用 move_uploaded_file
  2. 如果您在此请求中的某处 fopen() 同一文件,请确保调用 fclose()

关于php - 为什么 php rename() 会破坏我的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5904304/

相关文章:

php - 如何使用PHP数组模拟SQL LEFT JOIN操作?

php - 从 PHP 生成 XML 时解析属性时出错

php - 对从数据库中获取的表名称进行排序。 PHP 数据库

重命名环境中的数据集

javascript - PHP/Javascript 分块上传 : IE9 corrupt file if filesize is over upload_max_filesize or post_max_size

php - Paypal 动态按钮创建中的自定义变量

git 重命名许多文件和文件夹

PHP 重命名目录失败

ruby-on-rails - 如何在Plupload上传后显示图片而不刷新页面?

couchdb - 是否可以将 PLUpload 与 CouchDB 结合使用?