Php 使用ajax上载文件不起作用

Php 使用ajax上载文件不起作用,php,jquery,ajax,html,Php,Jquery,Ajax,Html,我正在创建自己的小CMS,需要上传文件和图像。我已经尝试实现blueimp上传程序,但没有成功 我想通过jquery脚本将formData发送到我的CMS。在PHP代码(receive)中,我检查内容类型,然后希望将文件传递给函数(processing)。在控制台中,我可以看到jquery发送了附加文件,但我在PHP中得到了空的$\u POST和$\u FILES数组 我不能使用GET请求,因为这些请求受我的CMS限制 以下是我的代码片段: HTML格式: <form enctype="m

我正在创建自己的小CMS,需要上传文件和图像。我已经尝试实现blueimp上传程序,但没有成功

我想通过jquery脚本将formData发送到我的CMS。在PHP代码(receive)中,我检查内容类型,然后希望将文件传递给函数(processing)。在控制台中,我可以看到jquery发送了附加文件,但我在PHP中得到了空的$\u POST和$\u FILES数组

我不能使用GET请求,因为这些请求受我的CMS限制

以下是我的代码片段:

HTML格式:

<form enctype="multipart/form-data">
    <input type="file" name="import_file" id="import_file" />
    <button id="import_send" value="import">Import</button>
</form>
PHP(接收):

这是帖子里的内容

-----------------------------24138208746564 Content-Disposition: form-data; name="192184_10150119104647532_7869997_o.jpg"; filename="192184_10150119104647532_7869997_o.jpg" Content-Type: image/jpeg
***
PHP脚本抛出一个错误,因为它没有从$\u文件中获取任何数据,因为它是空的。 无论我是想上传一张图片还是一个zip文件,它肯定不会比允许上传的最大文件大小大

另外一个问题是,我不能发送大于2M的文件。我已经试着包括

php_value upload_max_filesize 40M
php_value post_max_size 42M
在htaccess文件中,但是我得到一个500错误。我还尝试使用user.ini文件执行此操作

upload_max_filesize=40M
post_max_size=42M

但是它似乎没有效果。

我开发了自己的文件上传系统,这是我的一段代码,可以帮助你吗

$('#inputFile').on('change', function(e) {
        var $input = $(this);
        var file = e.currentTarget.files[0];
        var data = new FormData();
        data.append('file', file);

        $.ajax({
          type: "POST",
          data: data,
          cache: false,
          contentType: false,
          processData: false,
          url: 'path/to/php/script'
        })
          .done(function() {
            alert('success');
          });
});

我在ajax调用中做了一点小小的更改。现在它起作用了。谢谢你,史蒂夫

$.ajax({ url:window.location.href, 数据:数据, cache:false, processData:false, 键入:“POST”, contentType:false, 成功:功能(ret){ 警报(ret); }
});

请添加关于上传到底出了什么问题的信息。使用显示ajax请求和响应的浏览器(即Firefox Web Developer Extension(Web控制台))。是否发送ajax请求?响应主体是什么?如果它不能正常工作,您必须使用其他技术来ajax文件,如iframes,或者尝试这个jquery插件,我有时会使用它,它工作得很好:您可以对
htaccess
文件进行其他更改吗?这可能是
允许覆盖
的问题。@MatthewJohnson是的我可以用HATESS文件进行其他更改。设置缓存为false,内容类型为false,谢谢。欢迎您。请考虑接受这个答案作为最适合您的问题。谢谢。
-----------------------------24138208746564 Content-Disposition: form-data; name="192184_10150119104647532_7869997_o.jpg"; filename="192184_10150119104647532_7869997_o.jpg" Content-Type: image/jpeg
***
php_value upload_max_filesize 40M
php_value post_max_size 42M
upload_max_filesize=40M
post_max_size=42M
$('#inputFile').on('change', function(e) {
        var $input = $(this);
        var file = e.currentTarget.files[0];
        var data = new FormData();
        data.append('file', file);

        $.ajax({
          type: "POST",
          data: data,
          cache: false,
          contentType: false,
          processData: false,
          url: 'path/to/php/script'
        })
          .done(function() {
            alert('success');
          });
});