2016-05-19 4 views
0

У меня есть компонент на стороне клиента, который создает DataURL (то есть пользователь загружает или зацикливает изображение, а затем посещает его). Мне нужно отправить это сообщение через вызов AJAX в конечную точку паруса. От парусов документации, конечная точка должна читать файлы следующим образом:DataURL через AJAX to sails endpoint

req.file('file_name'); 

я застрял на том, как я должен идти от DataURI -> AJAX вызов отформатирован так, что конечная точка будет иметь возможность читать файл из req.file. Наверное, мне просто нужно увидеть реализацию настройки вызова в любой библиотеке javascript/framework, чтобы я мог реализовать.

Большое спасибо.

ответ

1

На стороне клиента вам необходимо преобразовать DataURL в данные формы. Есть несколько примеров here и here и отправить их на маршрут в вашем контроллере.

Ваша конечная точка будет маршрут, который выглядит немного как это:

var uploadHandlier = function(req, res) 
    { 

     req.file('avatar').upload(
     { 
       // don't allow the total upload size to exceed ~4MB 
       maxBytes: 4000000, 
       dirname: '/tmp' // some temp directory 
     }, function whenDone(error, uploadedFiles) 
     { 
       if (error) 
       { 
        if (error.code === 'E_EXCEEDS_UPLOAD_LIMIT') 
        { 
          return res.badRequest(
          { 
           msg: error.message 
          }); 
        } 

        return res.serverError(error); 
       } 

       if (_.isEmpty(uploadedFiles)) 
       { 
        res.badRequest(
        { 
          msg: "No file was uploaded." 
        }); 
        return; 
       } 

       var filePath = uploadedFiles[0].fd; 
       var fileType = uploadedFiles[0].type; 

       if (!_.includes(['image/jpeg', 'image/png', 'image/gif'], fileType)) 
       { 
        res.badRequest(
        { 
          msg: "Invalid file type." 
        }); 

        return; 
       } 

       // do your thing... 

     }); 
    }; 
Смежные вопросы