2015-02-04 6 views
0

달성하고자하는 것은 간단합니다. 골격을 생성하기 위해 각도 풀 스택 생성기를 사용하고 있습니다. 사용자는 이름, 이메일 등과 함께 프로필 사진을 업로드 할 수 있어야합니다. angular-file-uplpoad을 사용하여 멀티 파트 양식 요청을 보내고 있습니다. 위키에 따르면 아래 코드도 사용했습니다.앵귤러 풀 스택 생성기는 mongodb에 저장된 iamge를 보낼 수 없습니다.

// Requires multiparty 
 
multiparty = require('connect-multiparty'), 
 
multipartyMiddleware = multiparty(), 
 

 
// Requires controller 
 
UserController = require('./controllers/UserController'); 
 

 
// Example endpoint 
 
router.post('/api/user/uploads', multipartyMiddleware, UserController.uploadFile);
또한 몽고의 gridfs로 프로필 이미지를 스트리밍 gridfs-stream를 사용하고있다. 모든 것이 여기 괜찮을 것 같습니다. 프로필 이미지를 서버 로컬 파일로 스트리밍하면 실제로 이미지를 열고 볼 수 있기 때문입니다. 문제는 이제 이미지를 다시 브라우저로 보내려고한다는 것입니다. 나는

var Grid = require('gridfs-stream'); 
 
var GridFS = Grid(mongoose.connection.db, mongoose.mongo); 
 
var fs = require('fs'); 
 

 
/* 
 
    var UserSchema = new Schema({ 
 
    first_name: String, 
 
    last_name: String, 
 
    email: { type: String, lowercase: true }, 
 
    role: { 
 
    type: String, 
 
    default: 'user' 
 
    }, 
 
    hashedPassword: String, 
 
    provider: String, 
 
    salt: String, 
 
    phone: String, 
 
    projects: [{ 
 
    type : Schema.Types.ObjectId, 
 
    ref : 'Project' 
 
    }], 
 
    profile_picture: Schema.Types.ObjectId 
 
}); 
 
*/ 
 

 
// each user has a _id for a image file in mongodb 
 
getFile : function() { 
 
    
 
    var readstream = GridFS.createReadStream({ 
 
     _id : this.profile_picture, 
 
    }); 
 
    response.writeHead(200, {'Content-Type': 'iamge/png' }); 
 
    readstream.pipe(response); 
 
    
 
    },
아래 코드를 작성하지만이 작동하지 않습니다. 테스트 해봐. 심지어 fs.createReadStream (filename)을 사용하여 서버 측에 저장된 정적 이미지를로드합니다. 이미지는 실제로 전송되지만 브라우저에서 수신 된 깨진 이미지입니다. 나는 또한 response.download ('filename') 시도했다; 여전히 작동하지 않습니다. 어떤 제안?

감사합니다.

답변

0

당신이 쓴 : { '콘텐츠 유형': 'iamge/PNG를'}

이 때문이 해결되는지 알려주세요 : { '이미지/PNG로' '콘텐츠 유형'}에 수정을 나는 또한 문제가 있고 유사한 부호가있다.

+0

나는이 문제를 connect-multiparty 대신에 [multer] (https://github.com/expressjs/multer)를 사용하여 해결했다. app.js 파일로 이동하여 app.use (multer ({dest : './tmp/'})) 행을 추가하십시오. 나는 connect-multiparty가 올바르게 작동하지 않는다고 생각한다. –