XMLHttpRequest发送图像文件

时间:2016-07-25 07:06:08

标签: javascript php

我想将文件发送到服务器并在那里处理,然后发送响应。 要发送文件,我使用 FormData()的方法,一切似乎都很好,文件已发送,但无法解析 $ _ FILES +仅限内容通过 php://输入

可见
  1. 为什么 $ _ FILES
  2. 中无法显示该文件
  3. 如何解析?
  4. FormData()是否适用于所有浏览器?
  5. 我的代码:

    HTML

    <form id="myform">
        <input type="file" name="filename">
        <input type="button" name="button" value="Send">
    </form>
    

    JS

    var form = document.forms.myform;
    form.elements.button.onclick = function(){
        var file = form.elements.filename.files[0];
        if(file){
            img(file);
        }else{
            alert("Not file.");
        }
    };
    function img(file){
        var formdata = new FormData();
        formdata.append('file', file);
    
        var xhr = new XMLHttpRequest();
        xhr.open('POST', 'img.php');
        xhr.setRequestHeader('Content-Type', 'multipart/form-data');
        xhr.send(formdata);
        xhr.onreadystatechange = function(){
            if(xhr.readyState != 4) return;
            if(xhr.status != 200){
                alert("Status: " + xhr.status);
            }else{
                alert(xhr.responseText);
            }
        };
    }
    

    PHP

    <?php
    error_reporting(-1);
    print_r($_FILES['file']['size']); // only example, doesn't work
    
    $content = file_get_contents('php://input');
    print_r($content); // it's work , result in the photo
    ?>
    

    Photo

1 个答案:

答案 0 :(得分:0)

<强> 1。为什么文件在$ _FILES?

中不可见

因为没有必要使用编码。

<强> 2。如何解析?

使用全局变量$ _FILES

第3。 FormData()是否适用于所有浏览器?

没有。 Browser compatibility