2015-04-07 27 views
24

का उपयोग कर सर्वर पर फ़ाइल अपलोड करने के लिए कैसे मैं एक ऐप विकसित कर रहा हूं जहां मुझे सर्वर पर एक छवि अपलोड करने की आवश्यकता है। छवि के आधार पर मुझे एक प्रतिक्रिया मिलती है जिसे मुझे प्रस्तुत करने की आवश्यकता है?प्रतिक्रिया-मूल

क्या आप कृपया मेरी मदद कर सकते हैं प्रतिक्रिया-मूल का उपयोग कर छवि अपलोड करने के लिए कैसे?

उत्तर

1

कुछ संभावित विकल्प उपलब्ध हैं। मैं Obj सी में एक फ़ाइल कैसे अपलोड होगा:

http://facebook.github.io/react-native/docs/network.html

दूसरे, सिर्फ सवाल पूछने: सबसे पहले, आपको एक्सएचआर polyfill इस्तेमाल कर सकते हैं? उत्तर दें और फिर आप जावास्क्रिप्ट से कॉल करने के लिए बस native module लागू कर सकते हैं।

this Github समस्या पर इस पर कुछ और चर्चा है।

26

देखें फ़ाइल अपलोडिंग प्रतिक्रिया मूल में बनाई गई है।

से Example प्रतिक्रिया मूल निवासी कोड:

var photo = { 
    uri: uriFromCameraRoll, 
    type: 'image/jpeg', 
    name: 'photo.jpg', 
}; 

var body = new FormData(); 
body.append('authToken', 'secret'); 
body.append('photo', photo); 
body.append('title', 'A beautiful photo!'); 

xhr.open('POST', serverURL); 
xhr.send(body); 
+5

मैं .. Axios का उपयोग कर कुछ इसी तरह कर रहा हूँ व्याप्ति सर्वर प्राप्त मेटा डेटा नहीं बल्कि वास्तविक फ़ाइल है। 'UriFromCameraRoll' वास्तव में 'प्रेषण' के हिस्से के रूप में फ़ाइल में कैसे परिवर्तित करता है? – aginsburg

+0

'xhr' प्रतिक्रिया देशी एपीआई का हिस्सा नहीं है, यह मुझे 'xhr परिभाषित नहीं किया गया है' त्रुटि –

+1

@ जुलिअनके कोशिश करें: var xhr = new XMLHttpRequest(); https://facebook.github.io/react-native/docs/network.html#using-other-networking- पुस्तकालय –

0

टॉम की जवाब मेरे लिए काम नहीं किया। इसलिए मैंने एक मूल फ़ाइलपिकर मॉड्यूल लागू किया जो मुझे फ़ाइल चुनने में मदद करता है और फिर इसे अपलोड करने के लिए रीमोबाइल के प्रतिक्रिया-मूल-फ़ाइल-हस्तांतरण पैकेज का उपयोग करता है। FilePickerModule चयनित फ़ाइल (FileURL) का पथ देता है जिसका उपयोग इसे अपलोड करने के लिए प्रतिक्रिया-मूल-फ़ाइल-हस्तांतरण द्वारा किया जाता है। कोड यह रहा:

var FileTransfer = require('@remobile/react-native-file-transfer'); 
var FilePickerModule = NativeModules.FilePickerModule; 

     var that = this; 
     var fileTransfer = new FileTransfer(); 
     FilePickerModule.chooseFile() 
     .then(function(fileURL){ 
     var options = {}; 
     options.fileKey = 'file'; 
     options.fileName = fileURL.substr(fileURL.lastIndexOf('/')+1); 
     options.mimeType = 'text/plain'; 
     var headers = { 
      'X-XSRF-TOKEN':that.state.token 
     }; 
     options.headers = headers; 
     var url = "Set the URL here" ; 
     fileTransfer.upload(fileURL, encodeURI(url),(result)=> 
     { 
       console.log(result); 
      }, (error)=>{ 
       console.log(error); 
      }, options); 
    }) 
13

मेरे समाधान एपीआई और FormData लाने उपयोग कर रहा है।

एंड्रॉइड पर परीक्षण किया गया।

const file = { 
    uri,    // e.g. 'file:///path/to/file/image123.jpg' 
    name,   // e.g. 'image123.jpg', 
    type    // e.g. 'image/jpg' 
} 

const body = new FormData() 
body.append('file', file) 

fetch(url, { 
    method: 'POST', 
    body 
}) 
+1

लाने में कोई प्रगति नहीं है :( –