Без каких-либо форм, могу ли я просто отправить файл/файлы с <input type="file">
в 'upload.php', используя метод POST с помощью jQuery. Входной тег не находится внутри тега формы. Он стоит индивидуально. Поэтому я не хочу использовать плагины jQuery, такие как «ajaxForm» или «ajaxSubmit».Загрузка файлов без формы
ответ
Попробуйте puglin simpleUpload, ни формы потребность
Html:
<input type="file" name="arquivo" id="simpleUpload" multiple >
<button type="button" id="enviar">Enviar</button>
Javascript:
$('#simpleUpload').simpleUpload({
url: 'upload.php',
trigger: '#enviar',
success: function(data){
alert('Envio com sucesso');
}
});
К сожалению, это не сработало – alerya
Базирование на this tutorial, здесь очень простой способ сделать это:
$('your_trigger_element_selector').on('click', function(){
var data = new FormData();
data.append('input_file_name', $('your_file_input_selector').prop('files')[0]);
// append other variables to data if you want: data.append('field_name_x', field_value_x);
$.ajax({
type: 'POST',
processData: false, // important
contentType: false, // important
data: data,
url: your_ajax_path,
dataType : 'json',
// in PHP you can call and process file in the same way as if it was submitted from a form:
// $_FILES['input_file_name']
success: function(jsonData){
...
}
...
});
});
Не забудьте добавить правильную обработку ошибок
Вы можете использовать FormData, чтобы отправить свои данные по запросу POST. Вот простой пример:
var myFormData = new FormData();
myFormData.append('pictureFile', pictureInput.files[0]);
$.ajax({
url: 'upload.php',
type: 'POST',
processData: false, // important
contentType: false, // important
dataType : 'json',
data: myFormData
});
Вы не должны использовать форму, чтобы сделать запрос AJAX, до тех пор, как вы знаете, ваши настройки запроса (например, данные URL, метода и параметров).
IMHO это лучшее решение, однако другой выбор - использовать
Да, это правда. Старые браузеры не поддерживают FormData и ajax для загрузки файлов и решения, если использовать iframe как резерв в этих браузерах. –
Не забудьте добавить 'processData: false' и' contentType: false' в объект настроек, иначе вы получите Uncaught TypeError: Незаконный вызов – jsmiff
Извините за то, что он этот парень, но AngularJS предлагает простое и изящное решение.
Вот код, я использую:
ngApp.controller('ngController', ['$upload',
function($upload) {
$scope.Upload = function($files, index) {
for (var i = 0; i < $files.length; i++) {
var file = $files[i];
$scope.upload = $upload.upload({
file: file,
url: '/File/Upload',
data: {
id: 1 //some data you want to send along with the file,
name: 'ABC' //some data you want to send along with the file,
},
}).progress(function(evt) {
}).success(function(data, status, headers, config) {
alert('Upload done');
}
})
.error(function(message) {
alert('Upload failed');
});
}
};
}]);
.Hidden {
display: none
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div data-ng-controller="ngController">
<input type="button" value="Browse" onclick="$(this).next().click();" />
<input type="file" ng-file-select="Upload($files, 1)" class="Hidden" />
</div>
На стороне сервера у меня есть контроллер MVC с действием сейв файлов закачанными найдены в коллекции Request.Files и возвращении JsonResult.
Если вы используете AngularJS попробовать это, если вы не ... извините :-) родственную
В этом фрагменте есть много ошибок. –
Downvoted, потому что не работает с директивой $ upload – NicoJuicy
Все ответы здесь по-прежнему используют FormData API. Это похоже на загрузку файла формы без формы. Кроме того, можно загрузить файл непосредственно в качестве содержимого внутри тела POST
запроса с помощью xmlHttpRequest
так:
var xmlHttpRequest = new XMLHttpRequest();
var file = ...file handle...
var fileName = ...file name...
var target = ...target...
var mimeType = ...mime type...
xmlHttpRequest.open('POST', target, true);
xmlHttpRequest.setRequestHeader('Content-Type', mimeType);
xmlHttpRequest.setRequestHeader('Content-Disposition', 'attachment; filename="' + fileName + '"');
xmlHttpRequest.send(file);
Content-Type
и Content-Disposition
заголовки используются для объяснения того, что мы посылаем (MIME-тип и имя файла).
Я написал аналогичный ответ также here.
Шаг 1: Создайте HTML-страницу, где разместить HTML-код.
Шаг 2: На странице кода HTML Внизу (нижний колонтитул) Создайте Javascript: и поместите Jquery Code в тег скрипта.
Шаг 3: Создайте копию файла PHP и php-кода. после кода JQuery в $.ajax
Введите URL-адрес, который указан в имени вашего php-файла.
JS
//$(document).on("change", "#avatar", function() { // If you want to upload without a submit button
$(document).on("click", "#upload", function() {
var file_data = $("#avatar").prop("files")[0]; // Getting the properties of file from file field
var form_data = new FormData(); // Creating object of FormData class
form_data.append("file", file_data) // Appending parameter named file with properties of file_field to form_data
form_data.append("user_id", 123) // Adding extra parameters to form_data
$.ajax({
url: "/upload_avatar", // Upload Script
dataType: 'script',
cache: false,
contentType: false,
processData: false,
data: form_data, // Setting the data attribute of ajax with file_data
type: 'post',
success: function(data) {
// Do something after Ajax completes
}
});
});
HTML
<input id="avatar" type="file" name="avatar" />
<button id="upload" value="Upload" />
Php
print_r($_FILES);
print_r($_POST);
. Пожалуйста, добавьте комментарии/описание для вашего кода. – kvorobiev
Отсутствует '' '' '' '' '': – user3284463
Сделал мой день :) Спасибо – shekhardtu
- 1. Загрузка файлов без формы?
- 2. Загрузка файлов без fileDownloadActionListener
- 3. Загрузка файлов без $ _FILES
- 4. Загрузка без искажения файлов
- 5. Загрузка файлов изображений на сервер без использования элемента HTML-формы
- 6. Загрузка изображения jquery без формы
- 7. Загрузка формы без вызова Form.resize()?
- 8. Загрузка файла PHP без формы
- 9. Загрузка больших файлов без блокировки
- 10. Загрузка нескольких файлов без Html5
- 11. Загрузка файлов качается без причины
- 12. Загрузка файлов в домен с помощью формы
- 13. Загрузка файлов в HTML5 Веб-формы
- 14. Загрузка нескольких файлов из одной формы php
- 15. Загрузка несколько файлов одиночной формы Dir
- 16. Загрузка файлов с использованием формы jQuery
- 17. Загрузка нескольких файлов с использованием одной формы
- 18. Загрузка нескольких файлов на сервер из формы
- 19. Загрузка нескольких файлов, переименование с данными формы
- 20. Загрузка файлов не запускается после отправки формы
- 21. Загрузка файла Java без html-формы
- 22. Загрузка изображения через AJAX без формы
- 23. JQuery Ajax Загрузка файлов
- 24. Загрузка файлов/изображений без «move_uploaded_files» (PHP)
- 25. PHP: загрузка файла без контроля загрузки файлов
- 26. Загрузка HTML-файлов без открытия браузера
- 27. Загрузка двух файлов в php без arry
- 28. PHP: загрузка нескольких файлов без ajax
- 29. Загрузка нескольких файлов без полного пути
- 30. Vertx3.0 Простая загрузка формы
Попробуйте это: http://www.uploadify.com/ но использовать вспышку версия. Давай, брось свою скалу. Я не уверен, что версия HTML5 работает без формы. Наверное, будет, но я не уверен. –
Arrr .... Я хочу сказать, что он должен работать в HTML 5. Но у вас будет много проблем с совместимостью с платформой «браузеры старше нескольких лет». Каким будет вред в создании формы или динамически формировать форму у нулей? – Yitzhak