2013-01-21 1 views
1

나는이 안드로이드 애플 리케이션을 Cordova-2.2.0을 기반으로 구축했으며, 서버 측 노드를 사용하고 있습니다. 카메라 또는 파일에서 이미지를 서버로 보내야하는 부분이 있습니다. 이미지가 서버에 업로드되었지만 저장되면 손상된 것 같습니다. 메모장에서 이미지를 열면 파일에 "추가 헤더"가 생깁니다. 게다가 모든 파일은 똑같습니다. 다음은 클라이언트에서 내 코드입니다 :노드의 phonegap에서 req를 처리하는 방법은 무엇입니까?

function getPhoto() { 

     navigator.camera.getPicture(uploadPhoto, 
            function(message) { alert('No image selected');}, 
            { quality: 50, 
            destinationType: navigator.camera.DestinationType.FILE_URI, 
            sourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY } 
            ); 

    } 

function uploadPhoto(imageURI) { 
     var largeImage = document.getElementById('Image'); 
     largeImage.style.display = 'block'; 
     largeImage.src = imageURI; 
     var options = new FileUploadOptions(); 
     options.fileKey="file"; 
     options.fileName=imageURI.substr(imageURI.lastIndexOf('/')+1); 
     options.mimeType="image/jpg"; 

     options.chunkedMode = false; 

     var ft = new FileTransfer(); 
     ft.upload(imageURI, "http://10.8.13.92:8082", win, fail, options); 
    } 

는 그리고 이것은 서버의 코드입니다 :

http.createServer(function (req,res){ 
var fs = require('fs'); 
var imagen = fs.createWriteStream("imagen.jpg",{'flags':'a'}); 

req.addListener('response',function(response){ 

}) 
}); 

req.addListener('data',function(chunk){ 
    imagen.write(chunk,encoding='binary'); 
}); 

req.on('end',function(){ 
    imagen.end(); 

    console.log('File written'); 
}); 

}).listen(8082); 

내가 아는 문제는 서버에있는,하지만 난 다른 아무것도 찾을 수 없습니다 이것은 .jpg 파일을 작성하는 것입니다. 문서에서

답변

0

:

FileTransfer 객체는 HTTP 여러 부분으로 POST 요청을 사용하여 원격 서버에 파일을 업로드 할 수있는 방법을 제공합니다.

모든 요청 데이터를 이미지 파일에 쓰려고하지만 요청 데이터가 2 진 이미지 데이터가 아닙니다. HTTP 다중 파트 형식의 파일을 포함하므로 파일에 쓰기 전에 구문 분석해야합니다.

가장 간단한 방법은 bodyParser 미들웨어와 함께 connect을 사용하는 것입니다.

샘플 응용 프로그램 :

var http = require('http'); 
var connect = require('connect'); 

var app = connect(); 
var server = http.createServer(app); 
app.use(connect.bodyParser()); 
app.use(function(req, res) { 
    console.log(req.files); // Here is object with uploaded files 
}); 

server.listen(8082); 

당신은 req.files 객체에 파일을 업로드하고 필요한 목적지로 이동하는 경로를 찾을 수 있습니다.

관련 문제