PHP文件上传不起作用。得到错误:

时间:2014-05-21 21:35:53

标签: php file upload

为了开始,我已经在这里查看了一些类似的问题,但仍然无法解决我的问题。

HTML:

<input type="file" name="filename" multiple="multiple" data-classIcon="icon-plus" data-buttonText="Upload Your File">

PHP:

$name = $_FILES['filename']; 
$temp_name = $_FILES['filename']['tmp_name']; 
if(isset($name)){
    if(!empty($name)){ 
        $location = 'uploads/'; 
        if(move_uploaded_file($temp_name, $location.$name)){
            echo 'uploaded';
        }
    } 
} else {
    echo 'error: not uploaded';
}

JS:

$('#cc-submit').on('click', function(e){

            e.preventDefault();

            $.ajax({
                type: "POST",
                url: "balanced/example.php",
                data: $('#creditcardpost').serialize(),
                success: function(data)
                {
                    alert(data);                
                }

            });
        });

错误:

未定义的索引:xx行上的/public_html/script.php中的文件名(收集$ _FILES变量的两行。

&#34;错误:未上传&#34;

2 个答案:

答案 0 :(得分:0)

您必须使用:

$name = $_FILES['filename']['name'];

答案 1 :(得分:0)

我在$ _FILES上使用了print_r,发现我的文件是以“file-0”形式出现的。我没有进行多文件上传,所以这对我有用。这是解决方案。 PHP:

$name = $_FILES['file-0']['name'];  
$temp_name = $_FILES['file-0']['tmp_name'];  
        $location = '../uploads/';      
        if(move_uploaded_file($temp_name, $location.$name)){

        }

print_r($name);

发送它的JS需要有点工作:

var data = new FormData();
jQuery.each($('#file')[0].files, function(i, file) {
    data.append('file-'+i, file);
});


$.ajax({
    url: 'balanced/upload.php',
    data: data,
    cache: false,
    contentType: false,
    processData: false,
    type: 'POST',
    success: function(data){
        alert(data);
        $('#creditcardpost').append('<input type="hidden" value="' + data + '" name="filename" />');
    }
}); 

我已经开始工作了。谢谢你帮帮我们。