Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.03.2015, 01:47
Аватар для blacklool
Аспирант
Отправить личное сообщение для blacklool Посмотреть профиль Найти все сообщения от blacklool
 
Регистрация: 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
    )
}
что не так?
Ответить с цитированием
  #2 (permalink)  
Старый 20.03.2015, 09:14
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

И как вы получаете PUT на сервере?
Ответить с цитированием
  #3 (permalink)  
Старый 20.03.2015, 14:43
Аватар для blacklool
Аспирант
Отправить личное сообщение для blacklool Посмотреть профиль Найти все сообщения от blacklool
 
Регистрация: 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.
Ответить с цитированием
  #4 (permalink)  
Старый 20.03.2015, 15:42
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Ошибаетесь. PUT, это сырые данные, необработанные, получить их можно так:

$file = file_get_contents("php://input");

И зачем вообще это нужно не понятно.
Ответить с цитированием
  #5 (permalink)  
Старый 20.03.2015, 15:47
Аватар для blacklool
Аспирант
Отправить личное сообщение для blacklool Посмотреть профиль Найти все сообщения от blacklool
 
Регистрация: 16.01.2014
Сообщений: 50

Сообщение от laimas Посмотреть сообщение
Ошибаетесь. PUT, это сырые данные, необработанные, получить их можно так:

$file = file_get_contents("php://input");

И зачем вообще это нужно не понятно.
возможно вы и правы, я просто навел рпимер, что мне дали на stackoverflow...
да и это не важно у меня сервер то не на PHP а на nodeJS
Ответить с цитированием
  #6 (permalink)  
Старый 20.03.2015, 15:49
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Упоминание было РНР, что там в nodeJS я не в курсе.
Ответить с цитированием
  #7 (permalink)  
Старый 20.03.2015, 16:16
Аватар для blacklool
Аспирант
Отправить личное сообщение для blacklool Посмотреть профиль Найти все сообщения от blacklool
 
Регистрация: 16.01.2014
Сообщений: 50

laimas,
ясно, я так понял придется все менять только на GET и POST ...
Ответить с цитированием
  #8 (permalink)  
Старый 20.03.2015, 16:44
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Файлы GET методом, это как, в base64 и в стоку? Метод GET не для передачи больших объемов данных типа файлов.
Я не в курсе Node.JS, что вам делать сказать не могу.
Ответить с цитированием
  #9 (permalink)  
Старый 20.03.2015, 19:53
Аватар для blacklool
Аспирант
Отправить личное сообщение для blacklool Посмотреть профиль Найти все сообщения от blacklool
 
Регистрация: 16.01.2014
Сообщений: 50

laimas,
Да нет, передача файлов только через POST
я имел ввиду логику страниц cms, т.к. использую GET, POST, PUT, DELETE ... но все равно спасибо!
Ответить с цитированием
  #10 (permalink)  
Старый 23.03.2015, 21:15
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Цитата:
PUT, это сырые данные
Подлежащее от сказуемого, выраженного существительным, обособляется с помощью тире, а не запятой.

Цитата:
ясно, я так понял придется все менять только на GET и POST ...
Хаха, сдался?
Посмотри во вкладку network браузерного отладчика (Ctrl+Shift+Q для файрфокса). Что кажет? Запрос отправляется? Какой ответ? Какой код ответа?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Живой поиск JQUERY + AJAX + PHP + MYSQL dimi007 AJAX и COMET 2 22.07.2014 13:50
Не работает ajax в паре с jquery DedMa3ajjj AJAX и COMET 1 01.09.2013 14:15
Книги по Ajax BaVa Учебные материалы 18 18.08.2013 14:05
Какая разница между post запросами jquery и ajax? Rooner jQuery 2 18.06.2012 14:29
Не работает jQuery меню с AJAX eugene1986 jQuery 0 08.07.2010 18:49