2017-07-17 4 views
0

私はこれを腋窩で解明しようとしています。私はスーパーエージェントとの直接API呼び出しを行いましたが、今ではAxiosでどのように使用するかを知りたいので、残りのプロジェクトはAxiosで行います。私は曇り反応があることを知っていますが、これは私がそれを行うのが好きな方法です。 ここまで私がこれまで持っていたことがあります。どのように枢機卿と曇りに直接API呼び出しを行うには?

import React, { Component } from 'react'; 
import Dropzone from 'react-dropzone'; 
import sha1 from 'sha1'; 
import superagent from 'superagent'; 
import axios from 'axios'; 

class Images extends Component { 
    uploadFile(files) { 
    console.log('uploadFile: '); 
    const image = files[0]; 

    const cloudName = 'tbaustin'; 
    const url = `https://api.cloudinary.com/v1_1/${cloudName}/image/upload`; 

    const timestamp = Date.now()/1000; 
    const uploadPreset = 'cnh7rzwp'; 

    const paramsStr = `timestamp=${timestamp}&upload_preset=${uploadPreset}secret`; 

    const signature = sha1(paramsStr); 
    const params = { 
     'api_key': 'api_key', 
     'timestamp': timestamp, 
     'upload_preset': uploadPreset, 
     'signature': signature 
    } 

    let uploadRequest = superagent.post(url) 
    uploadRequest.attach('file', image); 

    Object.keys(params).forEach((key) => { 
     uploadRequest.field(key, params[key]); 
    }); 

    uploadRequest.end((err, res) => { 
     if(err) { 
     alert(err); 
     return 
     } 

     console.log('UPLOAD COMLETE: '+JSON.stringify(res.body)); 
    }); 



//AXIOS CONTENT HERE 
    // let request = axios.post(url, {file: image}); 
    // request.then((response) => { 
    // Object.keys(params).forEach((key) => { 
    //  uploadRequest.field(key, params[key]); 
    // }); 
    // console.log('UPLOAD COMPLETE: '+JSON.stringify(response.body)); 
    // }).catch((err) => { alert(err); }); 
    } 

    render() { 
    return (
     <div> 
     <Dropzone onDrop={this.uploadFile.bind(this)}/> 
     </div> 
    ) 
    } 
} 

export default Images; 
+0

すべてのAPIキーと画像アップロードロジックの第一は、私の場合をserver.Inあなたのバックエンドに常駐している必要があり、それは、ノードjs.Youは、すべてのキーサーバー側を維持し、次にaxios経由でノードサーバを呼び出して、それを伝えますアップロードするファイルとノードは、資産をアップロードするために曇りのあるAPIを呼び出します。 http://cloudinary.com/documentation/node_image_upload#server_side_upload – VivekN

+0

これは正しい方法ではないと私は理解しています。私はちょうど、この作業をするために正しいAxiosコードを作るために熱いことを知りたかったのです。 –

+0

ここでの正しいアプローチは、Axiosを使用してファイルをアップロードするノードapiを呼び出すことです。 これはすべてのフォームデータからなるポストコールです。フォームにファイルまたはテキストフィールドを含めることができます。 – VivekN

答えて

0

これは私に役立ちました。

let formData = new FormData(); 
    formData.append("api_key",''); 
    formData.append("file", image); 
    formData.append("public_id", "sample_image"); 
    formData.append("timestamp", timeStamp); 
    formData.append("upload_preset", uploadPreset); 

    axios 
    .post(url, formData) 
    .then((result) => { 
     console.log(result); 
    }) 
    .catch((err) => { 
     console.log(err); 
    })  
関連する問題