Browse Source

Add written bytes count to write APIs

Ben Hsieh 8 years ago
parent
commit
7ce5fba126

+ 10
- 4
src/android/src/main/java/com/RNFetchBlob/RNFetchBlobFS.java View File

74
                     String path = args[0];
74
                     String path = args[0];
75
                     String encoding = args[1];
75
                     String encoding = args[1];
76
                     String data = args[2];
76
                     String data = args[2];
77
+                    int written = 0;
77
                     File f = new File(path);
78
                     File f = new File(path);
78
                     File dir = f.getParentFile();
79
                     File dir = f.getParentFile();
79
                     if(!dir.exists())
80
                     if(!dir.exists())
90
                         FileInputStream fin = new FileInputStream(src);
91
                         FileInputStream fin = new FileInputStream(src);
91
                         byte [] buffer = new byte [10240];
92
                         byte [] buffer = new byte [10240];
92
                         int read = fin.read(buffer);
93
                         int read = fin.read(buffer);
94
+                        written = read;
93
                         while(read > 0) {
95
                         while(read > 0) {
94
                             fout.write(buffer, 0, read);
96
                             fout.write(buffer, 0, read);
95
                             read = fin.read(buffer);
97
                             read = fin.read(buffer);
98
+                            written += read;
96
                         }
99
                         }
97
                         fin.close();
100
                         fin.close();
98
                     }
101
                     }
99
-                    else
100
-                        fout.write(stringToBytes(data, encoding));
102
+                    else {
103
+                        byte[] bytes = stringToBytes(data, encoding);
104
+                        fout.write(bytes);
105
+                        written = bytes.length;
106
+                    }
101
                     fout.close();
107
                     fout.close();
102
-                    promise.resolve(Arguments.createArray());
108
+                    promise.resolve(written);
103
                 } catch (Exception e) {
109
                 } catch (Exception e) {
104
                     promise.reject("RNFetchBlob writeFileError", e.getLocalizedMessage());
110
                     promise.reject("RNFetchBlob writeFileError", e.getLocalizedMessage());
105
                 }
111
                 }
133
                     }
139
                     }
134
                     os.write(bytes);
140
                     os.write(bytes);
135
                     os.close();
141
                     os.close();
136
-                    promise.resolve(null);
142
+                    promise.resolve(data.size());
137
                 } catch (Exception e) {
143
                 } catch (Exception e) {
138
                     promise.reject("RNFetchBlob writeFileError", e.getLocalizedMessage());
144
                     promise.reject("RNFetchBlob writeFileError", e.getLocalizedMessage());
139
                 }
145
                 }

+ 10
- 5
src/ios/RNFetchBlobFS.m View File

185
     }
185
     }
186
 }
186
 }
187
 
187
 
188
-+ (void) writeFileFromFile:(NSString *)src toFile:(NSString *)dest append:(BOOL)append
188
++ (NSNumber *) writeFileFromFile:(NSString *)src toFile:(NSString *)dest append:(BOOL)append
189
 {
189
 {
190
     NSInputStream * is = [[NSInputStream alloc] initWithFileAtPath:src];
190
     NSInputStream * is = [[NSInputStream alloc] initWithFileAtPath:src];
191
     NSOutputStream * os = [[NSOutputStream alloc] initToFileAtPath:dest append:append];
191
     NSOutputStream * os = [[NSOutputStream alloc] initToFileAtPath:dest append:append];
192
     [is open];
192
     [is open];
193
     [os open];
193
     [os open];
194
     uint8_t buffer[10240];
194
     uint8_t buffer[10240];
195
+    long written = 0;
195
     int read = [is read:buffer maxLength:10240];
196
     int read = [is read:buffer maxLength:10240];
197
+    written += read;
196
     while(read > 0) {
198
     while(read > 0) {
197
         [os write:buffer maxLength:read];
199
         [os write:buffer maxLength:read];
198
         read = [is read:buffer maxLength:10240];
200
         read = [is read:buffer maxLength:10240];
201
+        written += read;
199
     }
202
     }
200
     [os close];
203
     [os close];
201
     [is close];
204
     [is close];
205
+    return [NSNumber numberWithLong:written];
202
 }
206
 }
203
 
207
 
204
 + (void) writeFile:(NSString *)path encoding:(NSString *)encoding data:(NSString *)data append:(BOOL)append resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject
208
 + (void) writeFile:(NSString *)path encoding:(NSString *)encoding data:(NSString *)data append:(BOOL)append resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject
225
             content = [[NSData alloc] initWithBase64EncodedString:data options:0];
229
             content = [[NSData alloc] initWithBase64EncodedString:data options:0];
226
         }
230
         }
227
         else if([encoding isEqualToString:@"uri"]) {
231
         else if([encoding isEqualToString:@"uri"]) {
228
-            [[self class] writeFileFromFile:data toFile:path append:append];
229
-            resolve([NSNull null]);
232
+            NSNumber* size = [[self class] writeFileFromFile:data toFile:path append:append];
233
+            resolve(size);
230
             return;
234
             return;
231
         }
235
         }
232
         else {
236
         else {
241
             [content writeToFile:path atomically:YES];
245
             [content writeToFile:path atomically:YES];
242
         }
246
         }
243
         fm = nil;
247
         fm = nil;
244
-        resolve([NSNull null]);
248
+        
249
+        resolve([NSNumber numberWithInteger:[content length]]);
245
     }
250
     }
246
     @catch (NSException * e)
251
     @catch (NSException * e)
247
     {
252
     {
283
         }
288
         }
284
         free(bytes);
289
         free(bytes);
285
         fm = nil;
290
         fm = nil;
286
-        resolve([NSNull null]);
291
+        resolve([NSNumber numberWithInteger: data.count]);
287
     }
292
     }
288
     @catch (NSException * e)
293
     @catch (NSException * e)
289
     {
294
     {