2

我正在为我的项目使用 XAMPP。我正在尝试上传非常大的图像,但我注意到它不适用于所有图像。

在尝试了几次之后,我得出的结论是,分辨率高于大约 6500 像素宽度的图像不会上传。

我还发现文件大小似乎无关紧要,因为分辨率超过 6500 像素的 1.4MB 图像不会上传,但另一个 4.8MB 但分辨率较小的图像上传没有任何问题。

不知何故,图像未上传的原因是分辨率而不是文件大小。

我要显示的唯一代码是上传。然而,它并没有什么特别之处。如前所述,其他图像上传非常好,只有分辨率太高的图像不能上传。

php代码:

move_uploaded_file($imageUploadFile, $taget_original)

php.ini

post_max_size=10000M
upload_max_filesize=10000M

这个问题有什么解决办法吗?我是否需要指定要上传高分辨率图像的地方?

这非常重要,因为我希望能够上传 8k 到 16k 的图像。目前,即使文件大小应该足够小,这也不起作用,由于某种原因它不会上传图像。

4

4 回答 4

2

我不会查看上传大小部门,而是查看(允许的)内存大小部门(例如memory_limit。我敢打赌你正在使用ImageMagick或其他东西来实际图像进行处理。

另请参阅此处此处。只需确保您阅读了文档,因为这些值应该以字节而不是兆字节为单位指定(另请参阅这些答案的评论)。

我会尝试类似的东西:

$limit = 2 * (1024 * 1024 * 1024); // 2Gb

// set memory limit
ini_set(‘memory_limit’, $limit);  // For testing purposes you could try -1 (for unlimited) instead of $limit
// pixel cache max size
IMagick::setResourceLimit(imagick::RESOURCETYPE_MEMORY, $limit);
// maximum amount of memory map to allocate for the pixel cache
IMagick::setResourceLimit(imagick::RESOURCETYPE_MAP, $limit);

我想实际的限制应该是什么,必须通过反复试验才能找到,当然也取决于可用的内存量。如果您使用的是共享主机,那么这可能(或:很可能是个问题。

于 2019-12-10T23:14:50.503 回答
0

我以后也有类似的案例。相当奇怪的解决方案,但它对我有用。

尝试用MB指定大小,而不是M

upload_max_filesize = 256MB
post_max_size = 256MB

它应该工作。如果没有,请尝试增加memory_limit

我希望它有帮助

于 2019-12-11T00:18:48.803 回答
0

一些更新:

我稍微研究了我的 javascript 编程,发现了一些有趣的非工作实现。

看来这都是客户端问题。或者至少我认为是。由于某种原因,我的onprogress功能无法正常工作。我试图以更大的延迟上传图像,有时这解决了..其他时候它没有。

我不确定客户端问题是否导致了这一切。我可能只需要修复前端问题并希望支持的问题自行解决。

无论哪种方式,一旦我尝试解决所有问题,我都会更新这个问题。

于 2019-12-14T21:11:29.920 回答
-1

有几个地方可能会失败:

  • 网络服务器允许的POST 大小(基于 64 位编码,因此大于文件大小)
  • 网络服务器允许客户端发出请求的时间限制
  • PHP 允许的最大上传大小
  • PHP 中可用于加载和处理图像的内存(假设您执行 move_uplaoded_file() 以外的任何操作

除了最后一个,它与图像的尺寸无关。

于 2019-12-10T22:56:48.827 回答