代码之家  ›  专栏  ›  技术社区  ›  spkvn

文件上传302?

  •  0
  • spkvn  · 技术社区  · 8 年前

    我终于可以使用异步文件上传了,只是它似乎只处理文本文件。

    我不知道从哪里开始故障排除,我将把PHP相关的代码片段放在下面。

    菲律宾比索

    $fn = (isset($_SERVER['HTTP_X_FILENAME']) ? $_SERVER['HTTP_X_FILENAME']:false);
    echo $fn;
    
    try{
        file_put_contents("upload/".$fn, file_get_contents("php://input"));
        //echo file_get_contents("upload/".$fn);
    }catch(exception $e){
        echo $e->getMessage();
    }
    

    function UploadFile(file){
        var xhr = new XMLHttpRequest();
        //on the below if
        //xhr.upload: returns a XMLHttpRequestUpload Object, I believe just to check if it's supported in broswer
        if (xhr.upload){
            xhr.open("POST","http://domain.com/absolutepath/what.php",true);
            xhr.setRequestHeader("X-FILENAME",file.name);
    
            xhr.onreadystatechange = function(){
            if(xhr.status == 200 && xhr.readyState == 4){
                callback(xhr.responseText);
            }
        }
        xhr.send(file);
        }else{
            alert("Sorry, don't think this is supported in your browser.");
        }
    }
    

    我应该设置一个请求头吗?这是php中的内容吗。我需要换衣服吗?我的最大帖子大小是32MB,不知道还有什么会影响这一点。

    1 回复  |  直到 8 年前
        1
  •  3
  •   Marcos Pérez Gude    8 年前

    302 是状态代码,而不是错误代码。这意味着服务器正在将您重定向到另一个页面。但状态为“OK”和“Found”。

    此问题通常是由服务器 mod-security 打开,过滤器引擎过滤上传。

    要解决此问题,请将此代码添加到您的 .htaccess 如果您是客户端,请为托管帐户创建文件;如果您是管理员,请在apache配置中编辑:

    <IfModule mod_security.c>
    SecFilterEngine Off
    SecFilterScanPOST Off
    </IfModule>