通过AJAX上传图片-如何将文件名传递到服务器


Image Upload via AJAX - How to pass file name to server ?

我正试图使用AJAX将图像上传到Web服务器,但无法将文件名和路径传递到服务器端的PHP脚本。

这是带有JavaScript的HTML(ImageUpload01.php),它调用php:

请不要太注意粗体的行(),因为这些是我为测试而写的脚本,但不起作用。

我写的上传图片的程序没有使用AJAX,它确实有效。而且,我在发送客户ID时使用AJAX检索数据库记录,也做了完全相同的逻辑,它也起作用了。但是AJAX中的图像上传给我带来了问题(只是因为我不知道如何传递文件名/路径

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
        <title>Image Upload</title>
        <script>        
            function showThumbnail(str)
            {
                var xmlhttp;  
                **alert(str);**
                **var params = "q=" + $_FILES['file']['name'];**
                if (str==="")
                  {
                  document.getElementById("txtHint").innerHTML="";
                  return;
                  }
                if (window.XMLHttpRequest)
                  {// code for IE7+, Firefox, Chrome, Opera, Safari
                  xmlhttp=new XMLHttpRequest();
                  }
                else
                  {// code for IE6, IE5
                  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
                  }
                xmlhttp.open("POST","RunImageUpload01.php",true);
                xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
                xmlhttp.setRequestHeader("Content-length", params.length);
                xmlhttp.setRequestHeader("Connection", "close");                
                xmlhttp.onreadystatechange=function()
                  {
                  alert(xmlhttp.responseText);    
                  if (xmlhttp.readyState===4 && xmlhttp.status===200)
                    {
                    document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
                    }
                  };
                xmlhttp.send(params);
            }
        </script>        

    </head>
    <body>
        <?php
        ?>
        <form action="" > 
            <input type="file" name="file" id="file" /><br />
            <input type="button" name="submit" value="Submit" onclick="return showThumbnail(file.value);" />
        </form>        

        <div id="txtHint">
        </div>
    </body>
</html>

服务器端的PHP脚本(RunImageUpload01.PHP)

<?php
**$pName = $_POST['q'];**
$moved = move_uploaded_file($pName, "/var/www/vhosts/mywebsiteURL.com/store/mytest/images/temp/" . $pName);
                        if ($moved) {
                            echo "Success"
                        }
                        else {
                            echo "You fool, failure"
                        }
?>

请帮帮我,我更喜欢JavaScript而不是JQuery。

谢谢,

Isaac

您使用的是什么浏览器?这不适用于旧的浏览器(IE)。我知道你提到你更喜欢香草javascript,但如果你可以选择使用jquery,看看这个插件:http://malsup.com/jquery/form/#file-上传。它为您提供了各种变通方法和技巧,使其适用于所有浏览器。

文件名不能与文件本身一起传递。相反,使用Javascript(从file输入元素)读取文件名,并将其作为单独的input type="hidden"元素发送。

顺便说一下,表单元素应该包含属性enctype="multipart/form-data",否则文件传输可能会出现问题。

使用XHR2来代替jQuery。

http://www.w3.org/TR/XMLHttpRequest2/#the-表单数据接口

原始的XMLHttpRequest不正确地支持多部分数据。

相关文章: