31 lines
1.1 KiB
C#
31 lines
1.1 KiB
C#
|
using System;
|
||
|
using System.Threading.Tasks;
|
||
|
using Windows.Security.Cryptography;
|
||
|
using Windows.Storage;
|
||
|
using Windows.Storage.Pickers;
|
||
|
using Microsoft.ReactNative.Managed;
|
||
|
|
||
|
namespace SheetJSWin {
|
||
|
[ReactModule]
|
||
|
class DocumentPicker {
|
||
|
private ReactContext context;
|
||
|
[ReactInitializer]
|
||
|
public void Initialize(ReactContext reactContext) { context = reactContext; }
|
||
|
|
||
|
[ReactMethod("PickAndRead")]
|
||
|
public async void PickAndRead(IReactPromise<string> result) {
|
||
|
context.Handle.UIDispatcher.Post(async() => { try {
|
||
|
var picker = new FileOpenPicker();
|
||
|
picker.SuggestedStartLocation = PickerLocationId.DocumentsLibrary;
|
||
|
picker.FileTypeFilter.Add(".xlsx");
|
||
|
picker.FileTypeFilter.Add(".xls");
|
||
|
|
||
|
var file = await picker.PickSingleFileAsync();
|
||
|
if(file == null) throw new Exception("File not found");
|
||
|
|
||
|
var buf = await FileIO.ReadBufferAsync(file);
|
||
|
result.Resolve(CryptographicBuffer.EncodeToBase64String(buf));
|
||
|
} catch(Exception e) { result.Reject(new ReactError { Message = e.Message }); }});
|
||
|
}
|
||
|
}
|
||
|
}
|