【问题标题】:Does codeigniter allow raw images upload?codeigniter 是否允许上传原始图像?
【发布时间】:2019-08-13 12:49:41
【问题描述】:

Codeigniter 不允许上传具有以下配置的原始图像文件(CR2、NEF、DNG 等)。

我正在使用 dropzone.js 上传图像/视频文件。将文件拖到 dropzone 窗口时,文件会上传到临时文件夹,提交时,它们会移动到所需的存储位置。

我可以使用 mime_types image/jpeg|image/png|image/gif|video/* 上传文件。但是,扩展名为 .CR2!.DNG 等的原始图像文件不会被上传。它总是抛出错误 You did not select a file to upload

在分析时,我发现默认的“上传”库仅允许 jpeg|png|gif 和其他 jpeg 支持的图像格式。

 $config['upload_path'] = './upload_files/temp/';
 $config['allowed_types'] = 'jpeg|png|jpg|cr2|dng|srf|mp4|mov|mpg|mpeg|wmv|mkv';
 $config['encrypt_name'] = TRUE;
 $this->load->library('upload'); 
 $this->upload->initialize($config);

 if (!$this->upload->do_upload('file')) {
  $msg = $this->upload->display_errors('', '');
  header("HTTP/1.1 404 Not Found");
  return $msg;
 } else {
      ....
 }

是否更新上传库以允许only选项所需的文件类型或者是否存在其他选项?

其次,如果要将文件上传到不同的存储服务器,即AWS S3或其他服务器,上传到本地临时文件夹然后将其推送到远程服务器总是明智的吗?

TIA

【问题讨论】:

标签: codeigniter amazon-s3 upload dropzone.js


【解决方案1】:

看看你的mime类型配置文件@config/mimes.php并添加

'dng'   =>  array('image/x-adobe-dng'),
'cr2'   =>  array('image/x-dcraw', 'image/x-canon-cr2'),

您会找到原始图像的 mime 类型列表here

更新恢复 cmets:

RAW 文件是相当大的文件,因此请确保在您的 php.ini 设置中满足图像大小:相应地更改 post_max_size

它适用于 php 7.2.20

【讨论】:

  • 嘿@Vickel,谢谢。添加了 mime 类型,重新启动 apache 服务器并尝试上传 .CR2 文件。我仍然遇到同样的错误。
  • 文件大小是多少?
  • 上传文件大小为21MB;在 php.ini 中的值设置为max_execution_time = 360upload_max_filesize = 40M
  • 好的,我刚刚仔细检查过,它不适用于 php 5.5.0(在我的本地主机上),这里我需要 $config['allowed_types'] ='*' 到让它工作)但它可以在我的 php 7.2.20 共享生产服务器上工作(我没有更改 php.ini,最多 8 MB 文件没关系)
  • 嗯,post_max_size参数默认值为8M,修改后上传成功。感谢您的支持。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-31
  • 2010-11-14
  • 1970-01-01
  • 2016-03-02
  • 2011-12-18
  • 2021-09-17
相关资源
最近更新 更多