2014-01-07 4 views
1

стороны клиента Кодне в состоянии получить изображение, загруженное Node.js

$(document).ready(function(){ 
    var fileSelected; 
    console.log("Document Loaded"); 
    $('#userPhotoInput').on('change', function(e){ 
     fileSelected = e.target.files[0]; 
     console.log(fileSelected.name); 
    }); 

    $('#uploadForm').submit(function(e){ 
     e.preventDefault(); 
     console.log("Submit Clicked"); 
     $.ajax({ 
      type:'POST', 
      url :'/upload', 
      processData: false, 
      contentType: false, 
      beforeSend: function(request) { 
       request.setRequestHeader("Content-Type", fileSelected.type); 
      } 
      success : function(data){ 
       console.log(data); 
      }, 
      error : function(error){ 
       console.log(error) 
      } 
     }); 
     return false; 
    }); 
}); 

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

// Global app configuration section 
app.set('views', 'cloud/views'); // Specify the folder to find templates 
app.set('view engine', 'ejs'); // Set the template engine 
app.use(express.bodyParser()); // Middleware for reading request body 
app.post('/upload',function(req,res){ 
    var response = ""; 
    for(var key in req){ 
     console.log(key); 
    response += ((!response.length) ? "" : ",") + key; 
    } 
    res.send(response.split(",")); 
}); 

Длину содержания я получаю его на сервере, который является Ну и хорошо. Но невозможно получить данные из запроса. Я пытаюсь получить req.files, но в запросе нет такого свойства. Также req.body возвращает пустой объект. Может ли кто-нибудь посоветовать мне это?

Server Log

Input: {"method"=>"POST", "url"=>"/upload", "headers"=>{"version"=>"HTTP/1.1", "host"=>"myhost", "user-agent"=>"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36", "content-length"=>"2348", "accept"=>"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", "accept-encoding"=>"gzip,deflate,sdch", "accept-language"=>"en-US,en;q=0.8,ar;q=0.6", "cache-control"=>"max-age=0", "content-type"=>"multipart/form-data; boundary=----WebKitFormBoundaryHsBgtmA9Sojnhbpx"}} 
+0

Вы можете также войти заголовки и проверить, если правильно выбран тип контента? – SridharVenkat

+0

Я добавил серверный журнал – CodeDecode

+1

добавить 'app.use (express.bodyParser());' в код сервера. Затем вы можете получить доступ к 'req.files' – vinayr

ответ

0

HTML-документ & форма, которую вы используете не доступен ... но вопрос с Ajax upload.

Обычно file upload will cause a page refresh, если вы хотите сделать загрузку асинхронной вам нужно будет ...

  1. Используйте плавающие фреймы (немного скучно сейчас ..).
  2. Используйте плагины Jquery (плагины на стороне клиента), которые доступны.

Предыдущий ответ StackOverflow - upload file with a form via ajax nodejs express

Эта ссылка демонстрирует Ajax загрузки файлов с помощью плагина trickery - http://markdawson.tumblr.com/post/18359176420/asynchronous-file-uploading-using-express-and-node-js

+0

К счастью, я использую Parse.com в качестве задней части, и это решение не получилось. Вместо этого я создал базовую строку файла и загрузил ее, и это сработало. – CodeDecode

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