2016-08-04 3 views
0

경로에 미들웨어로 설치 멀터를 설정했습니다. 해당 경로에 도달하면 멀터가 파일을 다운로드하지 않습니다. 이 보고서 CONSOLE.LOG 것입니다 :멀터가 파일을 파일로 저장하지 않음

{ firstname: 'foo', 
    lastname: 'foo', 
    username: 'foo10', 
    password: 'test1234', 
    file: '/9j/4AAQSkZJRgABAQAASABIAAD/4QBYRXhpZgAATU0AKgAAAAgAAgESAAMAAAABAAEAAIdpAAQAAAABAAAAJgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAAB..... 

} 

를 I multer에 대해 다음 설정이 있습니다

var storage = multer.diskStorage({ 
    destination: function(req, file, cb) { 
    cb(null, '../images/profile'); 
    }, 
    filename: function(req, file, cb) { 
    cb(null, req.body.username + '.jpeg'); 
    } 
}); 

var upload = multer({storage: storage}); 

router.post('/auth/signup', upload.single('file'), function(req,res) { 
    console.log(req.body); 
}); 

그래서 문제가 아닌 파일로 파일을 저장하는 단순히 다른 키로 취급한다는 것이다 - 값 쌍. 파일 데이터가 적절한 File 폼 데이터 필드로 업로드되는 아니라고 제안 Base64로 문자열로 업로드되고 http://ionicframework.com/docs/v2/native/camera/

import { Camera } from 'ionic-native'; 

Camera.getPicture(options).then((imageData) => { 
// imageData is either a base64 encoded string or a file URI 
// If it's base64: 
    let base64Image = 'data:image/jpeg;base64,' + imageData; 

    let formData: FormData = new FormData(), 
     xhr: XMLHttpRequest = new XMLHttpRequest();  
     formData.append("file", base64Image); 

     xhr.onreadystatechange =() => { 
      if (xhr.readyState === 4) { 
      if (xhr.status === 200) { 
       observer.next(JSON.parse(xhr.response)); 
       observer.complete(); 
      } else { 
       observer.error(xhr.response); 
      } 
      } 
     }; 
     xhr.open('POST', 'http://localhost:8080/auth/signup', true); 
     xhr.send(formData); 

}, (err) => { 
// Handle error 
}); 
+0

나는 그것을 얻지 못합니까? 파일을 저장하려고하는데 제대로 작동하지 않습니까? 무슨 일 이니? –

+0

설명이 추가되었습니다. – runtimeZero

+0

Base64로 인코딩 된 JPEG처럼 보입니다. 클라이언트 측 코드가 양식 데이터를 올바르게 업로드하고 있습니까? – robertklep

답변

0

:

더 명확히하기 위해, 난 코도 API로부터 이미지를 얻기 . 그렇기 때문에 multer을 일반 필드로 처리하고 파일에 저장하려고 시도하지 않습니다.

this answer에는 올바른 형식의 데이터 - URI 문자열 (예 : base64Image)을 처리하여 서버에 업로드하는 클라이언트 측 코드가 제공됩니다.

관련 문제