File tree 2 files changed +17
-3
lines changed
android/src/main/java/com/RNFetchBlob
2 files changed +17
-3
lines changed Original file line number Diff line number Diff line change @@ -530,16 +530,26 @@ private void done(Response resp) {
530
530
}
531
531
break ;
532
532
case FileStorage :
533
+ ResponseBody responseBody = resp .body ();
534
+
533
535
try {
534
536
// In order to write response data to `destPath` we have to invoke this method.
535
537
// It uses customized response body which is able to report download progress
536
538
// and write response data to destination path.
537
- resp . body () .bytes ();
539
+ responseBody .bytes ();
538
540
} catch (Exception ignored ) {
539
541
// ignored.printStackTrace();
540
542
}
541
- this .destPath = this .destPath .replace ("?append=true" , "" );
542
- callback .invoke (null , RNFetchBlobConst .RNFB_RESPONSE_PATH , this .destPath );
543
+
544
+ RNFetchBlobFileResp rnFetchBlobFileResp = (RNFetchBlobFileResp ) responseBody ;
545
+
546
+ if (rnFetchBlobFileResp != null && rnFetchBlobFileResp .isDownloadComplete () == false ){
547
+ callback .invoke ("RNFetchBlob failed. Download interrupted." , null );
548
+ }
549
+ else {
550
+ this .destPath = this .destPath .replace ("?append=true" , "" );
551
+ callback .invoke (null , RNFetchBlobConst .RNFB_RESPONSE_PATH , this .destPath );
552
+ }
543
553
break ;
544
554
default :
545
555
try {
Original file line number Diff line number Diff line change @@ -68,6 +68,10 @@ public long contentLength() {
68
68
return originalBody .contentLength ();
69
69
}
70
70
71
+ public boolean isDownloadComplete () {
72
+ return bytesDownloaded == contentLength ();
73
+ }
74
+
71
75
@ Override
72
76
public BufferedSource source () {
73
77
ProgressReportingSource countable = new ProgressReportingSource ();
You can’t perform that action at this time.
0 commit comments