Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.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
Javascript 使用Ajax上传文件_Javascript_Php_Jquery_Ajax - Fatal编程技术网

Javascript 使用Ajax上传文件

Javascript 使用Ajax上传文件,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我已经尝试了几种不同的方法(基于文章和其他SO论坛)来实现这一点,并且我已经将范围缩小到当我尝试将表单数据发送到我的PHP脚本时数据丢失的事实。当我回显$_FILES[“file”][“name”]时,它是空的 我已经测试过了,我的ajax和php脚本是连接在一起的,因为我可以返回一些数据,而不是任何表单数据。这显然会导致文件无法上传 我当前的代码参考了这个论坛(lee8oi的答案): 我开始了一个新的论坛,因为这个问题是6年前提出的 html: php: if($\u POST[“label”

我已经尝试了几种不同的方法(基于文章和其他SO论坛)来实现这一点,并且我已经将范围缩小到当我尝试将表单数据发送到我的PHP脚本时数据丢失的事实。当我回显$_FILES[“file”][“name”]时,它是空的

我已经测试过了,我的ajax和php脚本是连接在一起的,因为我可以返回一些数据,而不是任何表单数据。这显然会导致文件无法上传

我当前的代码参考了这个论坛(lee8oi的答案): 我开始了一个新的论坛,因为这个问题是6年前提出的

html:

php:

if($\u POST[“label”]){
$label=$_POST[“label”];
}
$allowedExts=数组(“gif”、“jpeg”、“jpg”、“png”);
$temp=explode(“.”,$_文件[“文件”][“名称”]);
$extension=end($temp);
如果(($_文件[“文件”][“类型”]=“图像/gif”)
||($_文件[“文件”][“类型”]=“图像/jpeg”)
||($_文件[“文件”][“类型”]=“图像/jpg”)
||($_文件[“文件”][“类型”]=“图像/pjpeg”)
||($_文件[“文件”][“类型”]=“图像/x-png”)
||($_文件[“文件”][“类型”]=“图像/png”))
&&($_文件[“文件”][“大小”]<200000)
&&in_数组($extension$allowedExts)){
如果($\u文件[“文件”][“错误”]>0){
回显“返回代码:”.$\u文件[“文件”][“错误”]。
”; }否则{ $filename=$label.$\u文件[“文件”][“名称”]; echo“上传:.”文件[“文件”][“名称”]。“
”; echo“Type:”.$\u文件[“file”][“Type”]。“
”; 回显“大小:”($_文件[“文件”][“大小”]/1024)。“kB
”; 回显“临时文件:”.$\u文件[“文件”][“tmp\u名称”]。
”; 如果(文件_存在(“上传/”$filename)){ echo$filename。“已存在。”; }否则{ 移动上传的文件($文件[“文件”][“tmp文件名”], “上传/”$filename); echo“存储在:“.”uploads/“$filename中; } } }否则{ echo$_文件[“文件”][“名称”]; }
我想您只需要更改以下行

var fd = new FormData( $('#signUpForm') );

FormData的构造函数需要本机表单元素,而不是jQuery对象。所以
document.getElementById('signUpForm')
$('signUpForm')[0]
,和
这一切都会起作用


这提供了进一步的解释。

我认为您只需要更改以下行

var fd = new FormData( $('#signUpForm') );

FormData的构造函数需要本机表单元素,而不是jQuery对象。所以
document.getElementById('signUpForm')
$('signUpForm')[0]
,和
这一切都会起作用


这提供了进一步的解释。

回答得好,我投了更高的票,因为比我的好。你搞定了回答得好,我投了赞成票,因为比我的好。你搞定了
   if ($_POST["label"]) {
      $label = $_POST["label"];
    }
    $allowedExts = array("gif", "jpeg", "jpg", "png");
    $temp = explode(".", $_FILES["file"]["name"]);
    $extension = end($temp);
    if ((($_FILES["file"]["type"] == "image/gif")
    || ($_FILES["file"]["type"] == "image/jpeg")
    || ($_FILES["file"]["type"] == "image/jpg")
    || ($_FILES["file"]["type"] == "image/pjpeg")
    || ($_FILES["file"]["type"] == "image/x-png")
    || ($_FILES["file"]["type"] == "image/png"))
    && ($_FILES["file"]["size"] < 200000)
    && in_array($extension, $allowedExts)) {
        if ($_FILES["file"]["error"] > 0) {
            echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
        } else {
            $filename = $label.$_FILES["file"]["name"];
            echo "Upload: " . $_FILES["file"]["name"] . "<br>";
            echo "Type: " . $_FILES["file"]["type"] . "<br>";
            echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
            echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";

            if (file_exists("uploads/" . $filename)) {
                echo $filename . " already exists. ";
            } else {
                move_uploaded_file($_FILES["file"]["tmp_name"],
                "uploads/" . $filename);
                echo "Stored in: " . "uploads/" . $filename;
            }
        }
    } else {
        echo $_FILES["file"]["name"];
    }
var fd = new FormData( $('#signUpForm') );
var fd = new FormData( $('#signUpForm')[0] );
var fd = new FormData(this);