【问题标题】:How to upload an image more than 2MB via my API如何通过我的 API 上传超过 2MB 的图像
【发布时间】:2016-01-19 09:57:39
【问题描述】:

我正在使用 Laravel 4.2 开发一个 API。使用 Postman 测试我的方法。

由于尺寸问题,通过 API 上传图片无法得到任何响应。

当我上传一个 image.icon 时,它会成功返回。

但是当我执行 image.jpg (size: 2MB) 时,它会返回: Could not get any response

没有像 400、401 等这样的代码。

PHP 信息:

max_execution_time          10000
max_file_uploads:           20
max_input_nesting_level:    64
max_input_time:             60
max_input_vars:             1000
memory_limit:               1024M
post_max_size:              5000M
upload_max_filesize         5000M

代码:

$attachment = Input::file('attachment');

如何上传超过 2MB 的图片?

.htaccess:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    php_value post_max_size 200M
    php_value upload_max_filesize 200M

    # Redirect Trailing Slashes...
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

    LimitRequestBody 102400

</IfModule>

截图:

【问题讨论】:

  • 你使用的是 nginx 还是 Apache ?如果是 nginx,您需要确保 nginx 可以处理您发送的上传数据量。
  • @zaherg 我正在使用亚马逊 ec2 linux、apache。 Apache/2.4.16 (Amazon) OpenSSL/1.0.1k-fips PHP/5.6.14

标签: php api laravel-4


【解决方案1】:

您需要更改您的 PHP 设置以允许更大的上传。 PHP 对这些有很多限制。 POST 大小、上传大小等

注意post_max_size 应大于 upload_max_filesize

; Maximum size of POST data that PHP will accept.
; Its value may be 0 to disable the limit. It is ignored if POST data reading
; is disabled through enable_post_data_reading.
; http://php.net/post-max-size
post_max_size = 125M

; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 100M

; Maximum number of files that can be uploaded via a single request
max_file_uploads = 20

通过 .Htaccess

您也可以通过 .htaccess 文件增加上传限制:-

RewriteEngine on之后写下这行

php_value post_max_size 200M
php_value upload_max_filesize 200M

就你而言

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    php_value post_max_size 200M
    php_value upload_max_filesize 200M

    # Redirect Trailing Slashes...
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

    LimitRequestBody 102400

</IfModule>

【讨论】:

  • 只需在 RewriteEngine on 后写上一行
  • 您的项目中有.htaccess 文件吗?
  • 是的。它在我的项目文件夹中:app_name/.htaccess。我也做了:sudo service httpd restart 但仍然没有上传我刷新了我的website.com/phpinfo.php 它仍然是 5000M
  • 尝试运行 sudo service apache2 restart ,您仍然面临 2MB 的问题吗?因为你说你在phpinfo中看到了5000M。
  • 我也尝试过上传。仍然没有上传。
【解决方案2】:

检查您的 php.ini 文件。您可以将 php.ini 设置编辑为

upload_max_filesize = 8M 
post_max_size = 8M

或者你可以使用

ini_set('upload_max_filesize', '8M');

【讨论】:

  • htaccess 怎么样?如何在 htaccess 中做到这一点?
  • 你可以写“php_value upload_max_filesize 30M”
  • 仍未上传...检查我的新编辑.htaccess
猜你喜欢
  • 2021-01-20
  • 1970-01-01
  • 2019-10-15
  • 1970-01-01
  • 2021-08-30
  • 2016-02-21
  • 2022-07-26
  • 2012-02-02
  • 2012-07-24
相关资源
最近更新 更多