Проверка файлового реквизита перед загрузкой - PullRequest
1 голос
/ 14 ноября 2009

Я практикуюсь с PHP и AJAX, но у меня есть некоторые проблемы!

Я пытаюсь получить имя файла, тип, размер из предупреждения jQuery после выбора изображения для загрузки, но я получаю пустую строку.

<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>

Эта форма включает файл JS , в котором есть сценарий ajax, который запрашивает у php-страницы имя файла опубликованного файла, но он не работает. Нужно ли загружать файл, прежде чем я попытаюсь получить эти данные?

Файл JS:

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

PHP-файл 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"];
?>

Это работает, если я делаю тест с action:"get_test" на странице php, но не работает с $_FILES["my_file"]["name"] или $_FILES["my_file"]["type"] и т.д ...

Может кто-нибудь помочь мне найти, где я не прав?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 14 ноября 2009

Ваш JS-скрипт отправляет отдельный запрос на сервер, поэтому ваш PHP не знает о файле, и $ _FILES ["my_file"] не является допустимым индексом.

Вам не нужно идти на сервер, чтобы получить имя файла, просто используйте это, чтобы получить имя файла:

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

Я полагаю, что он также возвращает путь, поэтому вам нужно будет удалить путь, чтобы получить имя файла.

Если вы пытаетесь получить все дополнительные сведения (размер файла и т. Д.), Вам нужно либо сначала загрузить файл (что побеждает то, что вы пытаетесь сделать), либо использовать комбинацию Flash + JavaScript, как эти решения:

1 голос
/ 11 января 2011

Вы можете реально получить размер с помощью jQuery. Смотрите ответ на этот вопрос:

Как проверить размер входного файла с помощью jQuery?

Вы можете использовать данный метод для получения имени, размера и типа. Общее убеждение, что это невозможно. Вы не можете всегда верить всему, что слышите ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...