没有提交按钮无法上传图片

时间:2018-08-24 06:33:32

标签: javascript php jquery ajax

我试图将mp3文件上传到服务器而不使用提交按钮,我正在使用ajax,但是文件没有上传到服务器。我错了,这是我的代码

<script>
$(document).ready(function() {
    $('#fileToUpload').change(function(){
        var file_data = $('#fileToUpload').prop('files')[0];   
        var form_data = new FormData();                  
        form_data.append('file', file_data);
        $.ajax({
            url: "modules/phone/newvoicemail.php",
            type: "POST",
            data: form_data,
            contentType: false,
            cache: false,
            processData:false,
            success: function(data){
                console.log(data);
            }
        });
    });
});
</script>

在newvoicemail.php中,我输入了以下代码

$src = $_FILES['file']['tmp_name'];
    $file_name = $_FILES['fileToUpload']['name'];
    $file_size =$_FILES['fileToUpload']['size'];
    $file_tmp =$_FILES['fileToUpload']['tmp_name'];
    $file_type=$_FILES['fileToUpload']['type'];
    move_uploaded_file($file_tmp,"voicemail/".$file_name);

这是我的html代码

<form name="voicemailform" action="modules/phone/voicemail.php" method="POST" enctype="multipart/form-data" class="form-inline for-frm">
<input type="file" name="fileToUpload" id="fileToUpload">
</form>

1 个答案:

答案 0 :(得分:0)

  1. 由于您是使用ajax上传的,因此不需要nameaction, HTML method标签上的enctypeform属性。这同样适用于文件输入标签的name属性。

  2. 您需要将 enctype:'multipart / form-data',添加到 $。ajax({...});

  3. 因为您要在JS中以参数名称 file 附加表单数据, form_data.append('file',file_data); ,您应该在php中访问它 为 $ _ FILES ['file'] ,而不是 $ _ FILES ['fileToUpload']

HTML代码:

<form class="form-inline for-frm">
    <input type="file" id="fileToUpload">
</form>

JS代码:

       $('#fileToUpload').change(function () {
            var file_data = $('#fileToUpload').prop('files')[0];
            var form_data = new FormData();
            form_data.append('file', file_data);
            $.ajax({
                url: "modules/phone/newvoicemail.php",
                type: "POST",
                data: form_data,
                contentType: false,
                cache: false,
                enctype: 'multipart/form-data',
                processData: false,
                success: function (data) {
                    console.log(data);
                }
            });
        });

PHP代码:newvoicemail.php

<?php
    $src = $_FILES['file']['tmp_name'];
    $file_name = $_FILES['file']['name'];
    move_uploaded_file($src, "./voicemail/".$file_name);