2017-10-16 17 views
-1

この例では、イメージをバックエンドにアップロードしました。 https://github.com/expo/image-upload-example反応ネイティブからエクスプレスバックエンドに画像をアップロードするにはどうすればよいですか?

私はRNのアプリケーションで使用するコードは次のとおりです。

let formData = new FormData(); 

    formData.append('name',this.state.name); 
    formData.append('description',this.state.description); 
    formData.append('price',this.state.price); 
    formData.append('oprice',this.state.oprice); 

    let fileArr = (this.state.image).split('.'); 
    let type = fileArr[fileArr.length -1] 
    let uri = this.state.image 


    formData.append('photo',{uri, name: `${this.state.name}.${type}`, type: `image/${type}`}); 
    console.log(formData); 

    AsyncStorage.getItem('jwt', (err, token) => { 

    fetch('http://192.168.1.83:8000/ShopRouter/deal', { 
    method: 'POST', 
    headers: { 
     Accept: 'application/json', 
     Authorization: token, 
     'Content-type': false 
    }, 
    body: formData 
    }) 

私は特急のバックエンドに使用するコードは次のとおりです。

app.post('/ShopRouter/deal', passport.authenticate('jwt2', {session:false}), function(req,res) { 
    upload(req, res, function(err) { 
     if (err) { 
      console.log(err); 
     } 

     console.log(req.file); 
     console.log(req.files); 
     console.log(req.photo); 


     console.log(req.body.name); 
     console.log(req.body.description); 

マイMulter構成は次のとおりです。

var storage = multer.diskStorage({ 
    destination: function (req, file, cb, err){ 
    console.log(file) 
    if (err){ 
     console.log(err) 
    } 
    cb(null, './uploads/') 
    }, 
filename: function (req, file, cb) { 
    console.log(file) 
    cb(null, file.originalname + '-' +Date.now()) 
    } 
}); 
    var upload = multer({ storage: storage }).single('photo'); 

console.log(file)行に

と表示されます。 210

{フィールド名: '写真'、 ORIGINALNAME: '空のボトル.JPG'、 エンコーディング: '7ビット' MIMEタイプ: '画像/ JPEG'}

Iは、バックエンドが受信理由分かりませんこれは画像のURIがないので、何もアップロードフォルダに保存されません。

req.file req.fileが返されます。

答えて

-1

画像をs3にアップロードするだけでこれを整理しました

関連する問題