Yüklemeden önce dosya sahne denetleme

2 Cevap php

PHP ve AJAX ile pratik ama bazı sorunlar var!

Ben sonra yüklemek için bir görüntü seçin, bir jQuery uyarıdan dosya adı, türü, boyutu almak için çalışıyorum, ama ben boş bir dize alıyorum.

<form action="upload_file.php" method="post" enctype="multipart/form-data">
    <label for="file">Filename:</label>
    <input type="file" name="my_file" />
    <input type="submit" name="submit" value="Submit" />
</form>

Bu form, bir php sayfasında yayınlanan dosyasının dosya sorar bir ajax komut dosyası olan bir JS dosyasını içerir, ancak çalışmıyor. Ben bu verileri almak çalışmadan önce dosya yüklemek gerekiyor mu?

JS dosyası:

$("input").change (function () {
    $.post("preview_uploader.php", { action:"get_size" }, function (data) {
        alert (data);
    });
});

PHP dosyası preview_uploader.php:

<?php
    if ($_POST["action"] == "get_test") print "text string test works!";
    if ($_POST["action"] == "get_name") print $_FILES["my_file"]["name"];
    if ($_POST["action"] == "get_size") print $_FILES["my_file"]["size"];
    if ($_POST["action"] == "get_type") print $_FILES["my_file"]["type"];
?>

I php sayfası ile action:"get_test" ile bir test yapmak ama $_FILES["my_file"]["name"] veya $_FILES["my_file"]["type"] vb işe yaramazsa çalışır ..

Birisi ben yanlış yerde bulmama yardım edebilir?

Teşekkürler!

2 Cevap

Sizin JS komut sunucu için ayrı bir istek gönderiyor ve böylece PHP dosyası habersiz, ve $ _FILES ["my_file"] geçerli bir dizin değil.

Sen dosya adını almak için sunucuya gitmek gerekmez, sadece dosya adını almak için kullanabilirsiniz:

$("input[type=file]").val();

Ben de yolu geri getirir inanıyorum, bu yüzden dosya almak için yolu kapalı şerit gerekir.

Tüm ek ayrıntıları (dosya boyutu, vb) almak için çalışıyoruz iseniz (bunu çalıştığınız ne defeats) ilk dosya yüklemek veya bu çözümleri gibi bir Flash + JavaScript kombinasyonunu kullanmanız gerekir ya:

Sen can aslında jQuery ile boyutu olsun. Bu soruların cevabını görmek:

Check file input size with jQuery

Sen adını, boyutunu ve türünü almak için verilen yöntemini kullanabilirsiniz. Genel kanı bu olası değildir. Her zaman size duymak her şeye inanamıyorum ...