首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP文件损坏

PHP文件损坏
EN

Stack Overflow用户
提问于 2016-03-21 04:15:06
回答 1查看 804关注 0票数 1

我有一个自动PHP脚本,它连接到电子邮件框,读取电子邮件并处理它们以创建票证。其中一些电子邮件包含各种类型的文件附件。我的脚本使用下面的代码将文件直接保存到一个母线数据库中。我用的是代码点火器。

代码语言:javascript
复制
public function saveFiles($filename, $fileurl, $jobid) {
     $filedata = array();
     $filedata['filename']= $filename;
     $filedata['filedescription'] = 'Incoming attachment.';
     $filedata['fileargid'] = $jobid;
     $filedata['fileaddedon'] = date('Y-m-d H:i:s P');
     $filedata['filedata'] = pg_escape_bytea(base64_encode(file_get_contents($fileurl)));

     $results = $this->db->insert('file', $filedata);
     if ($results)
         return $this->db->insert_id();
     else
         return FALSE;
}

但是,大多数文件都是保存的,没有任何问题。我的问题是,当我部署这个脚本时,一些pdf文件会被破坏。脚本在编码到base64之前将文件保存到本地磁盘。所有这些文件都是健康的。我怀疑在pg_escape_bytea(base64_encode(file_get_contents($fileurl)))期间发生了什么事情。

我在本地PC上使用php 5.5.9/Ubuntu开发了这个脚本,其中没有文件被破坏。但是脚本部署在带有php 5.3.10的Ubuntu服务器上,文件在那里被破坏。

我试着找出是什么原因造成的,但到目前为止还没有锁定。这是因为php版本不同吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-21 23:11:32

看上去要么:

  1. 您正在以“转义”格式对数据库进行编码,并以十六进制格式读取。
  2. 当客户端和后端字符编码不匹配时,您需要进行强制转换,并且可能存在多字节流错误。然后,用户必须按字节转换以避免此错误。在旁茶文献中,它也计算为unscape。

检查8.1节这里

如果没有问题,我会直接将bin2hex输出保存到字段中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36123027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档