파일 이름과 함께 업로드 한 후 이미지를 사이트에 업로드하고 페이지에 표시해야합니다. 이미지 아래. 나는 모든 것을 검색했고 동일한 페이지에서 업로드하고 표시하는 것에 대한 자습서를 많이 찾았지만 서버로부터 정보를 요청한 다음 다시 표시하는 것에 대한 내 이해가 붕괴 된 것 같습니다.이미지 업로드 및 페이지 (Node.js, React, js, Express.js)에 해당 이미지 표시
나는 node + react에서 웹 응용 프로그램을 작성하고 파일 IO에 express와 multer를 사용하고 있습니다. 여기 내 코드입니다 :
import React from 'react';
import ReactDOM from 'react-dom';
import Dropzone from 'react-dropzone-component';
import fs from 'fs';
import express from 'express';
import mutler from 'mutler';
var app = express();
var storage;
var upload;
export default class Form extends React.Component {
constructor (props) {
super(props);
storage = multer.diskStorage({
//file destination
destination: function (req, file, callback) {
callback(null, '/uploads/');
},
//set the filename
filename: function (req, file, callback) {
callback(null, file.originalname);
this.state = {
name: file.originalname
};
}
});
upload = multer({ storage : storage}).single('userImage');
app.use('/uploads/', express.static(__dirname + '/uploads/'));
}
handleImageUpload() {
app.post('/', function (req, res) {
fs.readFile(req.files.userImage.path, function(err, data) {
console.log('error with ' + data);
});
upload(req, res, function (err) {
if (err) {
return res.end("Error uploading file.");
}
res.writeFile("/uploads/" + origName, new Buffer(req.body.photo, "base64"), function(err) {
console.log("error writing image");
});
res.redirect('/');
});
});
}
getName() {
return this.state.name;
}
render() {
return (<div>
<form action="/" method="post" enctype="multipart/form-data">
<input type="image" name="userImage"/>
<input type="submit" name="submit" value="submit" onClick={this.handleImageUpload.bind(this)}/>
</form>
</div>
);
}
}
I했습니다 시도 여러 자습서를 다음 (DROPZONE을 가져온 이유입니다)하지만 난 그냥 내가하고 싶은 것을 위해이 알아낼 수 없습니다.
파일 이름을 생성자에 저장하면 그 파일을 나중에 가져 와서 다른 파일에 표시 할 수 있다는 것을 알았습니다.이 파일은 파일의 URL을 상위 파일의 이미지 소스에 간단히 표시합니다.
내 질문은 이것입니다. 어디서 잘못 읽었습니까? 내 논리에 따르면 이것은 잘 작동하지만 노드를 IO로 사용하는 데 익숙하지 않으며 읽은 튜토리얼에서 많은 사람들에게 공통적으로 나타나는 지식은 나와 함께 클릭하지 않는 것입니다. 당신의 도움에 미리 감사드립니다!
정말 고마워요! 이는 전체 프로세스를 훨씬 단순하게 만들어줍니다. 성공 코드에 대한 주석을 달았습니다. 그 예가 무엇입니까? 나는 당신이 코드에서 더 아래로 POST를하고 있다고 말할 수있다. 그리고 지금 나는 내 코드에서 내가 어디에 있는지에 대한 지표로서 '성공'이라는 단어를 콘솔에 출력하고있다. 또 다른 바보 같은 질문인데 죄송합니다.하지만 게시물 URL은 아무런 조치없이 여기서 어떻게 작동합니까? 나는 궁극적으로 나에게 이해가되지 않는 것이라고 생각한다. – DottoraQN
성공 코드의 예? 플럭스 아키텍처를 사용하고 있습니다. 반응 채널 구성 요소 상태를 업데이트 할 수 있도록 이미지를 게시했음을 알리는 데 도움이됩니다. 조치없이 게시물 URL은 어떻게 작동합니까? 질문을받지 못했습니다. 더 설명해보십시오. 어리석은 질문 같은 것이 없습니다. – user3770494
POST가 어떻게 작동하는지에 대한 이해에서, URL은 HTML 양식의 작업과 동일해야합니다. 나는 어디에서나 리디렉션하고 이미지 디스플레이를 망칠 위험을 감수하고 싶지 않기 때문에 URL을 '/'로 설정하려고 시도했지만 사이트에서 좋아하지 않습니다. 내가 뭘 놓치고 있니? – DottoraQN