import React, { useState ,useEffect} from ‘react’;
import { View, Button, Text, Alert } from ‘react-native’;
import * as DocumentPicker from ‘expo-document-picker’;
import * as Permissions from ‘expo-permissions’;
import axios from ‘axios’;
const ExcelUploadComponent = () => {
const [file, setFile] = useState(null);
useEffect(() => {
requestFilePermissions();
}, []);
const requestFilePermissions = async () => {
const { status } = await Permissions.askAsync(Permissions.MEDIA_LIBRARY);
if (status !== 'granted') {
Alert.alert('Permission Required', 'Please grant access to your media library to pick files.');
}
};
const pickDocument = async () => {
try {
const result = await DocumentPicker.pick({
type: [DocumentPicker.types.allFiles],
});
setFile(result);
} catch (err) {
console.log('Document picker error: ', err);
}
};
const uploadFile = async () => {
if (file) {
const formData = new FormData();
formData.append('file', {
uri: file.uri,
type: file.type,
name: file.name,
});
try {
const response = await axios.post('http://172.17.101.114:8080/upload-excel', formData);
console.log('Upload successful: ', response.data);
Alert.alert('Success', 'File uploaded and data saved successfully.');
} catch (err) {
console.log('Upload error: ', err);
Alert.alert('Error', 'An error occurred while uploading the file.');
}
}
};
return (
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
<Button title="Pick Excel File" onPress={pickDocument} />
{file && (
<View style={{ marginTop: 20 }}>
<Text>Selected File: {file.name}</Text>
</View>
)}
<Button title="Upload" onPress={uploadFile} disabled={!file} />
</View>
);
};
export default ExcelUploadComponent;