2014-09-22 4 views
0

Я пытаюсь загрузить изображение на Node.js, который работает просто отлично с этим следующим кодом:JQuery JSON загрузка изображений на Node.js

сторона клиента:

$("#portrait-upload").change(function(e) { 
    var data = e.target.files[0]; 

    $.ajax({ 
    url: "/upload", 
    type: "POST", 
    data: data, 
    cache: false, 
    processData: false, 
    contentType: "multipart/form-data", 
    success: function(response) { 
     console.log(response); 
    } 
    }); 
}); 

сервера сторона:

if(req.url == "/upload"){ 
    var image = fs.createWriteStream("temp.jpg"); 

    req.on("data", function(chunk) { 
    image.write(chunk); 
    res.write("Data received.\n"); 
    }); 

    req.on("end", function() { 
    image.end(); 
    res.end("Data reception ended."); 
    }); 
} 

Кроме того, хотя, я хочу, чтобы прочитать имя файла на стороне сервера. По-видимому, я не могу прочитать его из объекта запроса (по крайней мере, я не нашел подходящего метода). Поэтому я подумал, отправляющих объект JSON как с именем файла и сам файл - что-то вроде этого:

{ filename : data.name, file: data } 

Но это, по-видимому, не работает - это даже можно поместить изображения-данные в объект JSON подобное и прочитать его на сервере?

Что было бы лучшим способом передачи имени файла и самого файла изображения на узел?

Благодаря

+0

вы можете использовать для этого внешние модули, такие как [грозное] (https://github.com/felixge/node-formidable) – Ravi

ответ

1

Вы можете отправить имя файла в качестве параметра GET вместо POST.

+0

Большое спасибо за идею, это на самом деле то, как я это сделал, так как я не хочу использовать экспресс или грозное пока - я хочу придерживаться «базовых» модулей узла на данный момент. Для всех, кому это нужно - это клиент: $ .get ("/ upload", {filename: image.name}). Done (function (response) {console.log (response)}); сторона Сервер: Внутри http.createServer обратного вызова: , если ((request.url) .indexOf ("/ загрузки")> -1) { console.log (url.parse (request.url) .query) ; } – tricon

Смежные вопросы