diff --git a/ios/VydiaRNFileUploader.m b/ios/VydiaRNFileUploader.m index 7e11e5f5..f2f91801 100644 --- a/ios/VydiaRNFileUploader.m +++ b/ios/VydiaRNFileUploader.m @@ -55,7 +55,10 @@ - (void)_sendEventWithName:(NSString *)eventName body:(id)body { RCT_EXPORT_METHOD(getFileInfo:(NSString *)path resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { @try { - NSURL *fileUri = [NSURL URLWithString: path]; + // Escape non latin characters in filename + NSString *escapedPath = [path stringByAddingPercentEncodingWithAllowedCharacters: NSCharacterSet.URLQueryAllowedCharacterSet]; + + NSURL *fileUri = [NSURL URLWithString:escapedPath]; NSString *pathWithoutProtocol = [fileUri path]; NSString *name = [fileUri lastPathComponent]; NSString *extension = [name pathExtension]; @@ -242,11 +245,19 @@ - (NSData *)createBodyWithBoundary:(NSString *)boundary NSMutableData *httpBody = [NSMutableData data]; + // Escape non latin characters in filename + NSString *escapedPath = [path stringByAddingPercentEncodingWithAllowedCharacters: NSCharacterSet.URLQueryAllowedCharacterSet]; + // resolve path - NSURL *fileUri = [NSURL URLWithString: path]; - NSString *pathWithoutProtocol = [fileUri path]; + NSURL *fileUri = [NSURL URLWithString: escapedPath]; + + NSError* error = nil; + NSData *data = [NSData dataWithContentsOfURL:fileUri options:NSDataReadingMappedAlways error: &error]; + + if (data == nil) { + NSLog(@"Failed to read file %@", error); + } - NSData *data = [[NSFileManager defaultManager] contentsAtPath:pathWithoutProtocol]; NSString *filename = [path lastPathComponent]; NSString *mimetype = [self guessMIMETypeFromFileName:path];