Robię aplikację z Expo i chcę pozwolić użytkownikowi zrobić zdjęcie lub wybrać jedną z ich rolek z aparatu i przesłać ją na mój serwer. Jak mam to zrobic?Jak mogę załadować zdjęcie z Expo?
9
A
Odpowiedz
15
Użyj Expo ImagePicker
API wyświetlać w aparacie lub na rolce aparatu i odzyskać informacje o wybranym obrazie:
async function takeAndUploadPhotoAsync() {
// Display the camera to the user and wait for them to take a photo or to cancel
// the action
let result = await ImagePicker.launchCameraAsync({
allowsEditing: true,
aspect: [4, 3],
});
if (result.cancelled) {
return;
}
// ImagePicker saves the taken photo to disk and returns a local URI to it
let localUri = result.uri;
let filename = localUri.split('/').pop();
// Infer the type of the image
let match = /\.(\w+)$/.exec(filename);
let type = match ? `image/${match[1]}` : `image`;
// Upload the image using the fetch and FormData APIs
let formData = new FormData();
// Assume "photo" is the name of the form field the server expects
formData.append('photo', { uri: localUri, name: filename, type });
return await fetch(YOUR_SERVER_URL, {
method: 'POST',
body: formData,
header: {
'content-type': 'multipart/form-data',
},
});
}
Dla bardziej kompleksowy przykład w tym kodzie serwera, zobacz ten repo: https://github.com/exponent/image-upload-example.
2
Oficjalne przykłady użyć node.js, oto jak z PHP:
Expo
async function takePhotoAndUpload() {
let result = await ImagePicker.launchCameraAsync({
allowsEditing: false, // higher res on iOS
aspect: [4, 3],
});
if (result.cancelled) {
return;
}
let localUri = result.uri;
let filename = localUri.split('/').pop();
let match = /\.(\w+)$/.exec(filename);
let type = match ? `image/${match[1]}` : `image`;
let formData = new FormData();
formData.append('photo', { uri: localUri, name: filename, type });
return await fetch('http://example.com/upload.php', {
method: 'POST',
body: formData,
header: {
'content-type': 'multipart/form-data',
},
});
}
upload.php
<?php
move_uploaded_file($_FILES['photo']['tmp_name'], './photos/' . $_FILES['photo']['name']);
?>
Powiązane problemy
- 1. Nie można załadować aplikacji expo: Coś poszło nie tak
- 2. Jak mogę dodać zdjęcie kontaktu w ContentProviderOperation?
- 3. jak mogę wyciąć lub przyciąć zdjęcie treści?
- 4. Jak mogę dodać zdjęcie w treści wiadomości
- 5. Jak mogę załadować widok z lewej strony?
- 6. Jak mogę uzyskać pierwszą klatkę jako zdjęcie z youtube?
- 7. Nie używać widelca Expo reagującego natywnie
- 8. Zrób zdjęcie z html5
- 9. Otwórz zdjęcie z Instagram
- 10. Jak mogę załadować zoptymalizowany kod w GHCI?
- 11. Jak mogę ponownie załadować skrypt w IRB?
- 12. Jak mogę załadować DB do Heroku?
- 13. Expo XDE "przekroczono limit czasu z 60000 ms"?
- 14. jak uzyskać zdjęcie kontaktu URI
- 15. Facebook API załaduj zdjęcie z adresu URL
- 16. Jak mogę załadować plik PHP do zmiennej?
- 17. Jak mogę załadować model do pomocnika?
- 18. Jak zrobić zdjęcie, zapisać i uzyskać zdjęcie w Androidzie
- 19. Tweet zdjęcie z twitter gem
- 20. Jak mogę załadować wartości z pamięci bez zanieczyszczania pamięci podręcznej?
- 21. Jak mogę załadować lokalny plik za pomocą jQuery? (z plikiem: //)
- 22. Jak mogę załadować urządzenia z testu funkcjonalnego w Symfony 2
- 23. Jak mogę załadować plik wieloczęściowy/formularz z jax-rs?
- 24. Pobierz zdjęcie z kontaktu Swift
- 25. Jak załadować UIColor z Plista
- 26. Jak załadować AutoMapper z Unity?
- 27. Prześlij zdjęcie z aparatu do serwera PHP
- 28. dodać zdjęcie w opcji
- 29. Czy mogę zrobić zdjęcie w Unity za pomocą aparatu urządzenia?
- 30. Jak wyświetlić zdjęcie z interfejsu API Picasa Java?
Jak przesłać kilka zdjęć na raz? – Vinay
Awesome, thanks! – CoredusK
Człowieku, jesteś zbawicielem. Dziękuję bardzo! –