
20.03.2015, 01:47
|
 |
Аспирант
|
|
Регистрация: 16.01.2014
Сообщений: 50
|
|
jquery ajax file upliading method PUT
Здравстуйте,
кто нибудь может обяснить почему такой код работает только если type: 'POST' ?
Код:
|
$.ajax({
xhr: function(){
var xhr = new window.XMLHttpRequest();
xhr.upload.addEventListener("progress", function(evt){
uploadProgress(evt);
}, false);
xhr.addEventListener("progress", function(evt){
console.log('down');
}, false);
return xhr;
},
url : 'upload',
type: 'PUT',
data: data,
cache: false,
dataType: 'json',
processData: false,
contentType: false,
success: function(data, textStatus, jqXHR){
console.log(textStatus);
},
error: function(jqXHR, exception){
alert("error --'");
}
});
|
когда стоит POST то файл/лы передаются и upload проходит с успехом, но когда стоит PUT на сервер файлы не отправлаются..
И вообще возможно по методу PUT сделать upload без submit формы?
такой код у меня не работает:
Код:
|
$('#file-input').on('change', prepareUpload);
var files;
function prepareUpload(event){
files = event.target.files;
$.each(files, function(key, value){
data.append(key, value);
});
$.put(
$(this).parent().attr('action'),
data,
onAjaxSuccess_s
)
}
|
что не так? 
|
|

20.03.2015, 09:14
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
И как вы получаете PUT на сервере?
|
|

20.03.2015, 14:43
|
 |
Аспирант
|
|
Регистрация: 16.01.2014
Сообщений: 50
|
|
Сообщение от laimas
|
И как вы получаете PUT на сервере?
|
laimas,
Здравствуйте, вся информация должна быть в переменной "request" (сервер на nodejs),
Пример post:
console.log(req.files);
ответ:
{ files:
{ fieldName: 'files',
originalFilename: 'web.png',
path: 'C:\\Users\\Ivan\\AppData\\Local\\Temp\\6264-1a629s8.png',
headers:
{ 'content-disposition': 'form-data; name="files"; filename="web.png"',
'content-type': 'image/png' },
ws:
{ _writableState: [Object],
writable: true,
domain: null,
_events: [Object],
_maxListeners: 10,
path: 'C:\\Users\\Ivan\\AppData\\Local\\Temp\\6264-1a629s8.png',
fd: null,
flags: 'w',
mode: 438,
start: undefined,
pos: undefined,
bytesWritten: 13998,
closed: true },
size: 13998,
name: 'web.png',
type: 'image/png' }
}
но если не ошибають, путь в других, например PHP должен быть типа:
/upload/test.png
я пытался искать примеры для nodejs, но ничего так и не нашел, а что нашел то не работает....
Последний раз редактировалось blacklool, 20.03.2015 в 15:42.
|
|

20.03.2015, 15:42
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Ошибаетесь. PUT, это сырые данные, необработанные, получить их можно так:
$file = file_get_contents("php://input");
И зачем вообще это нужно не понятно.
|
|

20.03.2015, 15:47
|
 |
Аспирант
|
|
Регистрация: 16.01.2014
Сообщений: 50
|
|
Сообщение от laimas
|
Ошибаетесь. PUT, это сырые данные, необработанные, получить их можно так:
$file = file_get_contents("php://input");
И зачем вообще это нужно не понятно.
|
возможно вы и правы, я просто навел рпимер, что мне дали на stackoverflow...
да и это не важно у меня сервер то не на PHP а на nodeJS 
|
|

20.03.2015, 15:49
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Упоминание было РНР, что там в nodeJS я не в курсе.
|
|

20.03.2015, 16:16
|
 |
Аспирант
|
|
Регистрация: 16.01.2014
Сообщений: 50
|
|
laimas,
ясно, я так понял придется все менять только на GET и POST ...
|
|

20.03.2015, 16:44
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Файлы GET методом, это как, в base64 и в стоку? Метод GET не для передачи больших объемов данных типа файлов.
Я не в курсе Node.JS, что вам делать сказать не могу.
|
|

20.03.2015, 19:53
|
 |
Аспирант
|
|
Регистрация: 16.01.2014
Сообщений: 50
|
|
laimas,
Да нет, передача файлов только через POST 
я имел ввиду логику страниц cms, т.к. использую GET, POST, PUT, DELETE ... но все равно спасибо!
|
|

23.03.2015, 21:15
|
 |
Профессор
|
|
Регистрация: 24.09.2013
Сообщений: 1,436
|
|
Цитата:
|
PUT, это сырые данные
|
Подлежащее от сказуемого, выраженного существительным, обособляется с помощью тире, а не запятой.
Цитата:
|
ясно, я так понял придется все менять только на GET и POST ...
|
Хаха, сдался?
Посмотри во вкладку network браузерного отладчика (Ctrl+Shift+Q для файрфокса). Что кажет? Запрос отправляется? Какой ответ? Какой код ответа?
|
|
|
|