Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP+;Ajax:通过Ajax上传大型内容(413http代码)_Php_Ajax_Apache_Http Status Code 413 - Fatal编程技术网

PHP+;Ajax:通过Ajax上传大型内容(413http代码)

PHP+;Ajax:通过Ajax上传大型内容(413http代码),php,ajax,apache,http-status-code-413,Php,Ajax,Apache,Http Status Code 413,我在这个问题上花了整整两天的时间,我已经到了绝望的地步。当我通过Ajax上传文件内容时,我达到了请求限制——请求实体太大。我在Apache服务器上。我可以修改php.ini和htaccess,但不能修改除此之外的任何配置,因为我没有访问这些配置的权限 问题: 我有一个base64编码的图像内容,我需要上传到我的服务器(大约1MB大小)。我已尝试上载此值,结果导致413个错误代码。作为一个实验,我尝试使用一个字段上传图像,该字段适用于远大于1MB的图像和文件。似乎只有当请求参数中存在大于1MB的数

我在这个问题上花了整整两天的时间,我已经到了绝望的地步。当我通过Ajax上传文件内容时,我达到了请求限制——请求实体太大。我在Apache服务器上。我可以修改php.ini和htaccess,但不能修改除此之外的任何配置,因为我没有访问这些配置的权限

问题:

我有一个base64编码的图像内容,我需要上传到我的服务器(大约1MB大小)。我已尝试上载此值,结果导致413个错误代码。作为一个实验,我尝试使用一个
字段上传图像,该字段适用于远大于1MB的图像和文件。似乎只有当请求参数中存在大于1MB的数据时(例如,在输入字段中添加数据,或在其中一个请求参数中添加图像的base64表示),我才会遇到413错误。不过,使用文件输入上传相同的文件效果很好。 真正的问题是,在我的网站中,我不能让用户通过文件输入字段上传图像。我只有需要上传的图像的base64内容。鉴于我不能修改我的服务器设置,有没有办法将这些内容上传到我的服务器

其他信息:

我正在使用JS
FormData()
object。我表单的内容进入这个对象并上传到我的服务器。我可以使用formdata.append()之类的方法动态地向该对象添加值

  • 如果我从上面的描述中附加了大的base64字符串,我会遇到413错误
  • 如果我在表单中添加一个文本字段,并将base64字符串复制/粘贴到输入字段中,我还会遇到413错误
  • 如果我使用
    字段从我的机器上载相同的图像,并上载
    FormData
    对象,则图像将正常通过

希望这是足够的信息。作为奖励-如果有人能解释为什么通过文件输入上传文件有效,但通过文本字段上传相同的数据无效,那也会非常有益

对于将来有类似问题的人,我在下面的一个答案中找到了答案

基本上,我们将使用以下方法将base64字符串作为blob添加到formData对象:

var formData = new FormData();
var blob = new Blob(['Lorem ipsum'], { type: 'plain/text' });
formData.append('file', blob,'readme.txt');
这似乎模仿了文件输入的行为