我需要將圖片上傳到網站,並在上傳後將其顯示在網頁上,並顯示文件名的標題在形象下。我搜索了很多關於上傳和顯示在同一頁面上的很多教程,但我認爲我只理解了從服務器請求信息並將其顯示回來的內容。上傳圖片並在頁面上顯示該圖片(Node.js,React,js,Express.js)
我正在編寫我的web應用程序在node + react中,並使用express和multer作爲文件IO。這裏是我的代碼:
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>
);
}
}
我試過以下多個教程(這就是爲什麼懸浮窗是進口的),但我實在不明白這一點的是我想做的事情。
我想如果我在構造函數中將文件名保存爲狀態,那麼我可以稍後獲取它並將其顯示在另一個文件中,該文件只是將文件的url歸屬到較高的反應文件中的圖像源。
我的問題是:我哪裏出錯了?按照我的理由,這應該可以工作,但我是新來的IO節點,並且我看過的教程中的許多人似乎都是常識,並不是單擊我。預先感謝您的幫助!
非常感謝!這確實有幫助,並使整個過程更簡單。我在這裏看到,你已經對成功代碼發表了評論,那會是一個怎樣的例子?我可以告訴你在代碼中進一步發佈POST,現在我已經將「成功」這個詞打印到控制檯,作爲我在代碼中的指示器。 再一次,我很抱歉,如果這是另一個真正愚蠢的問題,但如何在沒有采取行動的情況下發佈網址?我認爲這是最終對我沒有意義的。 – DottoraQN
成功代碼示例? 我使用的是流量架構。它可以幫助我廣播我已經成功發佈圖像,以便更新我的反應組件狀態。 post url如何在沒有任何操作的情況下工作? 沒有得到你的問題,請嘗試更多地解釋它。 有沒有這樣的事情作爲一個愚蠢的問題:) – user3770494
從我的理解POST是如何工作的,url需要與html表單上的操作相同。我試圖將我的網址設置爲'/',因爲我不想在任何地方重定向,並冒着搞砸圖像顯示的風險,但該網站不喜歡它。我錯過了什麼? – DottoraQN