Я хочу осуществить простую загрузку файлов на моей интранет-странице с минимально возможными настройками.
Это моя часть HTML:
<input id="sortpicture" type="file" name="sortpic" />
<button id="upload">Upload</button>
и это мой JS-скрипт JS:
$("#upload").on("click", function() {
var file_data = $("#sortpicture").prop("files")[0];
var form_data = new FormData();
form_data.append("file", file_data);
alert(form_data);
$.ajax({
url: "/uploads",
dataType: 'script',
cache: false,
contentType: false,
processData: false,
data: form_data,
type: 'post',
success: function(){
alert("works");
}
});
});
В корневом каталоге веб-сайта есть папка с именем «uploads» с правами на изменение для «users» и «IIS_users».
Когда я выбираю файл с формой файла и нажимаю кнопку загрузки, первое предупреждение возвращает «[object FormData]». второе оповещение не вызывается и папка "uploads" тоже пуста !?
Может ли кто-нибудь помочь мне выяснить, что не так?
Также следующим шагом должно быть переименование файла с именем, созданным на стороне сервера. Может быть, кто-то может дать мне решение для этого тоже.
Ответы:
Вам нужен скрипт, который запускается на сервере, чтобы переместить файл в каталог загрузки. Метод jQuery
ajax
(работает в браузере) отправляет данные формы на сервер, а затем скрипт на сервере обрабатывает загрузку. Вот пример использования PHP.Ваш HTML-код в порядке, но обновите сценарий JS jQuery, чтобы он выглядел следующим образом:
А теперь для серверного скрипта, использующего PHP в данном случае.
upload.php : скрипт PHP, который запускается на сервере и направляет файл в каталог загрузки:
Кроме того, пара вещей о каталоге назначения:
И немного о функции PHP
move_uploaded_file
, используемой в скрипте upload.php :$_FILES['file']['name']
имя файла в том виде, в котором оно было загружено. Вам не нужно это использовать. Вы можете дать файлу любое имя (совместимое с файловой системой сервера), которое вы хотите:И наконец, помните о ваших значениях конфигурации PHP
upload_max_filesize
ANDpost_max_size
и убедитесь, что ваши тестовые файлы тоже не превышают. Вот некоторая помощь, как вы проверяете конфигурацию PHP и как вы устанавливаете максимальный размер файла и параметры публикации .источник
form_data.append
. Поэтому я изменил скрипт PHP, чтобы отразить новое имя ввода формы. Я также извлек ответ PHP-скрипта в предупреждение об успешном использовании ajax, чтобы помочь с отладкой.$_FILES['file']
источник
источник
и это PHP-файл для получения загруженных файлов
источник
if (true)
делает? Всегда оценивать как истину, поэтому бесполезно, не так ли? Также у вас есть дополнительный конец-кудрявый.Используйте чистый JS
Имя файла автоматически включается в запрос, и сервер может его прочитать, тип контента автоматически устанавливается на «multipart / form-data». Вот более развитый пример с обработкой ошибок и дополнительной отправкой JSON
Показать фрагмент кода
источник
Лучшая загрузка файла с использованием Jquery Ajax с Materialize Нажмите здесь, чтобы скачать
Когда вы выбираете изображение, оно будет конвертировано в базу 64, и вы можете сохранить его в базе данных, чтобы оно также было легким.
источник