hapijs 버전 17.0.1을 사용하고 있습니다. hapijs 경로에서 아약스 요청을 사용하여 이미지를 업로드하려고합니다.hapijs에서 프로필 사진 업로드 17.0
var uploadUserPic = {
method: 'POST',
path: '/v1/Module/uploadUserPic',
config: {
description: 'Update Image For User',
tags: ['api', 'User'],
auth: 'session',
payload: {
output: 'stream',
parse: true,
allow: 'multipart/form-data'
},
validate: {
payload: {
userId : Joi.string().regex(/^[a-f\d]{24}$/i).required(),
memberId: Joi.string().required(),
image_file: Joi.object().required(),
},
failAction: FailCallBack
}
},
handler: function (request, reply) {
var resultData = null;
var error = null;
return new Promise(function (resolve) {
var multiparty = require('multiparty');
var fs = require('fs');
var form = new multiparty.Form();
form.parse(request.payload, function (err, fields, files) {
if(err)
{
error = err;
resolve();
}
else
{
var mkdirp = require('mkdirp');
var img_dir = "./files/users/";
mkdirp(img_dir, function (err) {
if (err)
{
error = err;
console.error(err);
resolve();
}
else
{
var oldpath = files.image_file.path;
var newpath = "./files/users/"+requestPayload.userId+".png";
fs.rename(oldpath, newpath, function (err) {
if(err)
{
error = err;
}
resolve();
});
}
});
}
});
}).then(function (err, result) {
if(err) return sendError(err);
if(error) return sendError(error)
return {
"statusCode": 200,
"success": true
};
});
}
}
위의 코드는 내게 줄에 오류 cannot read property 'content-length' of undefined
에 따라 제공 form.parse(request.payload, function (err, fields, files) {});
나를 주시기 바랍니다 : 내 Hapijs 경로 코드가 여기에
var image_file_input = document.getElementById("user_profile_upload");
image_file_input.onchange = function() {
if(this.files != undefined)
{
if(this.files[0] != undefined)
{
var formData = tests.formdata ? new FormData() : null;
if (tests.formdata)
{
//alert(file)
formData.append('image_file', this.files[0]);
formData.append('userId', user_id);
formData.append('memberId', member_id);
}
$.ajax({
url: "/v1/User/uploadUserPic",
data: formData,
type: "POST",
dataType: "json",
contentType: false,
processData: false,
contentType: "multipart/form-data",
success: function(data){
console.log(data);
var errMsg = null;
var resData = null;
if(data.statusCode == 200)
{
resData = data.result;
}
else
{
alert(data.message)
}
},
error: function(error){
alert(error);
}
});
}
}
}
: 그리고 여기 내 AJAX 코드는 프로필 그림을 업로드하는 것입니다 만약 내가 뭔가 잘못하고있다. 만약 내가 PHP로 작성한 anohter URL로 아약스 요청의 URL을 대체하면 완벽하게 작동합니다. 이는 내 hapijs/nodejs 코드에 문제가 있음을 의미합니다.
'sendError'는 내 오류를 포맷하는 중입니다. 둘째로 나는'대답'대신'h'를 안다. 하지만 hapi 14에서 17로 업그레이드하여 전체 프로젝트에서 변경해야했습니다. 또한 'h'는 나에게 어색한 듯하다. 그래서 나는'reply'를 가변 표기법으로 생각하고'reply' 변수로'h'의 속성/기능을 호출했습니다. 그런데 도움을 주셔서 감사합니다. 나는 당신의 해결책을 확인하고 다시 연락 할 것입니다. –
그것은 매력 친구처럼 일했습니다. 당신의 도움을 주셔서 감사합니다. 당신의 대답을 기꺼이 받아들이십시오. –
전혀 문제가 없습니다. 다행스럽게도 : D –