<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Dropbox chunks upload slow &amp;amp; unpredictable in Dropbox API Support &amp; Feedback</title>
    <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Dropbox-chunks-upload-slow-amp-unpredictable/m-p/258135#M14976</link>
    <description>&lt;P&gt;I am trying to upload files larger than 150 MB using Dropbox API v2 on iOS. Problem is upload is sometimes slow, sometimes it hangs in the middle for several seconds, sometimes it stalls in the middle forever without failing or invoking the failure block. Using chunk sizes less than 50 MB makes it more reliable but chunk size like 100 MB throws all the issues. This happens during tests so I believe in production users&amp;nbsp;might&amp;nbsp;see more issues.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Here is the sample code I use for uploading. I am also looking for a way to continue these uploads in background. Please help.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;#define DB_CHUNK_SIZE (50*1024.0*1024.0)&lt;BR /&gt;&lt;BR /&gt;&lt;/PRE&gt;
&lt;P&gt;//Dropbox specific&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;@property&lt;/SPAN&gt; DBUploadTask&lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;DBFILESUploadSessionStartResult&lt;SPAN&gt; *, &lt;/SPAN&gt;DBNilObject&lt;SPAN&gt; *&amp;gt; * uploadTask;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;@property&lt;/SPAN&gt; DBUploadTask&lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;DBNilObject&lt;SPAN&gt; *, &lt;/SPAN&gt;DBFILESUploadSessionLookupError&lt;SPAN&gt; *&amp;gt; * continueTask;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;@property&lt;/SPAN&gt; DBUploadTask&lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;DBFILESFileMetadata&lt;SPAN&gt; *, &lt;/SPAN&gt;DBFILESUploadSessionFinishError&lt;SPAN&gt; *&amp;gt; *finishTask;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;@property unsigned long long&lt;SPAN&gt; offset;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;@property&lt;/SPAN&gt; &lt;SPAN&gt;NSFileHandle&lt;/SPAN&gt; *fileHandle;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;@property&lt;/SPAN&gt; &lt;SPAN&gt;NSNumber&lt;/SPAN&gt; *fileSize;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;@property&lt;/SPAN&gt; &lt;SPAN&gt;NSString&lt;/SPAN&gt; *sessionId;&lt;/P&gt;
&lt;PRE&gt;&amp;nbsp;DBUserClient *client = [DBClientsManager authorizedClient];
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _fileHandle = [NSFileHandle fileHandleForReadingAtPath:[url path]];
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Float64 chunkSize = DB_CHUNK_SIZE;//50 MB chunk size
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NSNumber *fileSizeNumber = [fileAttributes objectForKey:NSFileSize];
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _fileSize = fileSizeNumber;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NSData *data = [_fileHandle readDataOfLength:chunkSize];
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; LibraryViewController *__weak wSelf = self;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _uploadTask = [client.filesRoutes uploadSessionStartData:data];
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; [_uploadTask setResponseBlock:^(DBFILESUploadSessionStartResult * _Nullable result, DBNilObject * _Nullable routeError, DBRequestError * _Nullable networkError) {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (result) {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NSLog(@"%@\n", result);
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; wSelf.sessionId = result.sessionId;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; DBFILESUploadSessionCursor *cursor = [[DBFILESUploadSessionCursor alloc] initWithSessionId:result.sessionId offset:[NSNumber numberWithUnsignedLongLong:wSelf.fileHandle.offsetInFile]];
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; [wSelf uploadNextChunk:cursor atURL:url];
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } else {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NSLog(@"%@\n%@\n", routeError, networkError);
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; [wSelf.fileHandle closeFile];
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dispatch_async(dispatch_get_main_queue(), ^{
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; [wSelf cancelUpload:nil];
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; });
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }];
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; [_uploadTask setProgressBlock:^(int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite) {
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //&amp;nbsp; &amp;nbsp; NSLog(@"\n%lld\n%lld\n%lld\n", bytesWritten, totalBytesWritten, totalBytesExpectedToWrite);
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; wSelf.progress.progress = totalBytesWritten*1.f/wSelf.fileSize.longLongValue;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }];


- (void)uploadNextChunk:(DBFILESUploadSessionCursor *)cursor atURL:(NSURL *)url
{
    NSData *data;
    
    DBUserClient *client = [DBClientsManager authorizedClient];
    unsigned long long offset = _fileHandle.offsetInFile;
    
    if (_fileSize.longLongValue - _fileHandle.offsetInFile &amp;gt; DB_CHUNK_SIZE) {
        data = [_fileHandle readDataOfLength:DB_CHUNK_SIZE];
    } else {
        data = [_fileHandle readDataOfLength:(_fileSize.longLongValue - _fileHandle.offsetInFile)];
    }
    
    LibraryViewController *__weak weakSelf = self;
    
    NSString *path = [NSString stringWithFormat:@"/%@", [[url path] lastPathComponent]];
    
    if (data.length &amp;lt; DB_CHUNK_SIZE) {
        DBFILESCommitInfo *info = [[DBFILESCommitInfo alloc] initWithPath:path];
        
        _finishTask = [client.filesRoutes uploadSessionFinishData:cursor commit:info inputData:data];
        [_finishTask setResponseBlock:^(DBFILESFileMetadata * _Nullable result, DBFILESUploadSessionFinishError * _Nullable routeError, DBRequestError * _Nullable networkError) {
            if (result) {
              NSLog(@"Finished uploading: %@", result);
            } else {
                NSLog(@"finishError last chunk: %@", routeError);
                NSLog(@"error: %@", networkError);
            }
            
            dispatch_async(dispatch_get_main_queue(), ^{
                [weakSelf cancelUpload:nil];
            });
        }];
        
        return;
    }
    
    _continueTask = [client.filesRoutes uploadSessionAppendV2Data:cursor inputData:data];
    [_continueTask setResponseBlock:^(DBNilObject * _Nullable result, DBFILESUploadSessionLookupError * _Nullable routeError, DBRequestError * _Nullable networkError) {
        if (result) {
            NSLog(@"Result, uploading chunk %@", result);
            DBFILESUploadSessionCursor *cursor = [[DBFILESUploadSessionCursor alloc] initWithSessionId:weakSelf.sessionId offset:[NSNumber numberWithUnsignedLongLong:weakSelf.fileHandle.offsetInFile]];
            [weakSelf uploadNextChunk:cursor atURL:url];
        } else {
            NSLog(@"finishError: %@", routeError);
            NSLog(@"error: %@", networkError);
            [weakSelf.fileHandle closeFile];
            weakSelf.fileHandle = nil;
            [weakSelf cancelUpload:nil];
            
        }
    }];
    
    [_continueTask setProgressBlock:^(int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite) {
       // NSLog(@"Continue: bytesWritten = %lld, total bytes written %lld", bytesWritten, totalBytesWritten);
        dispatch_async(dispatch_get_main_queue(), ^{
            weakSelf.progress.progress = ((totalBytesWritten + offset)*1.f/weakSelf.fileSize.longLongValue);
        });
    }];
}&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Wed, 29 May 2019 09:16:27 GMT</pubDate>
    <dc:creator>DS6</dc:creator>
    <dc:date>2019-05-29T09:16:27Z</dc:date>
    <item>
      <title>Dropbox chunks upload slow &amp; unpredictable</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Dropbox-chunks-upload-slow-amp-unpredictable/m-p/258135#M14976</link>
      <description>&lt;P&gt;I am trying to upload files larger than 150 MB using Dropbox API v2 on iOS. Problem is upload is sometimes slow, sometimes it hangs in the middle for several seconds, sometimes it stalls in the middle forever without failing or invoking the failure block. Using chunk sizes less than 50 MB makes it more reliable but chunk size like 100 MB throws all the issues. This happens during tests so I believe in production users&amp;nbsp;might&amp;nbsp;see more issues.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Here is the sample code I use for uploading. I am also looking for a way to continue these uploads in background. Please help.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;#define DB_CHUNK_SIZE (50*1024.0*1024.0)&lt;BR /&gt;&lt;BR /&gt;&lt;/PRE&gt;
&lt;P&gt;//Dropbox specific&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;@property&lt;/SPAN&gt; DBUploadTask&lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;DBFILESUploadSessionStartResult&lt;SPAN&gt; *, &lt;/SPAN&gt;DBNilObject&lt;SPAN&gt; *&amp;gt; * uploadTask;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;@property&lt;/SPAN&gt; DBUploadTask&lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;DBNilObject&lt;SPAN&gt; *, &lt;/SPAN&gt;DBFILESUploadSessionLookupError&lt;SPAN&gt; *&amp;gt; * continueTask;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;@property&lt;/SPAN&gt; DBUploadTask&lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;DBFILESFileMetadata&lt;SPAN&gt; *, &lt;/SPAN&gt;DBFILESUploadSessionFinishError&lt;SPAN&gt; *&amp;gt; *finishTask;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;@property unsigned long long&lt;SPAN&gt; offset;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;@property&lt;/SPAN&gt; &lt;SPAN&gt;NSFileHandle&lt;/SPAN&gt; *fileHandle;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;@property&lt;/SPAN&gt; &lt;SPAN&gt;NSNumber&lt;/SPAN&gt; *fileSize;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;@property&lt;/SPAN&gt; &lt;SPAN&gt;NSString&lt;/SPAN&gt; *sessionId;&lt;/P&gt;
&lt;PRE&gt;&amp;nbsp;DBUserClient *client = [DBClientsManager authorizedClient];
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _fileHandle = [NSFileHandle fileHandleForReadingAtPath:[url path]];
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Float64 chunkSize = DB_CHUNK_SIZE;//50 MB chunk size
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NSNumber *fileSizeNumber = [fileAttributes objectForKey:NSFileSize];
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _fileSize = fileSizeNumber;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NSData *data = [_fileHandle readDataOfLength:chunkSize];
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; LibraryViewController *__weak wSelf = self;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _uploadTask = [client.filesRoutes uploadSessionStartData:data];
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; [_uploadTask setResponseBlock:^(DBFILESUploadSessionStartResult * _Nullable result, DBNilObject * _Nullable routeError, DBRequestError * _Nullable networkError) {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (result) {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NSLog(@"%@\n", result);
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; wSelf.sessionId = result.sessionId;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; DBFILESUploadSessionCursor *cursor = [[DBFILESUploadSessionCursor alloc] initWithSessionId:result.sessionId offset:[NSNumber numberWithUnsignedLongLong:wSelf.fileHandle.offsetInFile]];
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; [wSelf uploadNextChunk:cursor atURL:url];
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } else {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NSLog(@"%@\n%@\n", routeError, networkError);
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; [wSelf.fileHandle closeFile];
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dispatch_async(dispatch_get_main_queue(), ^{
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; [wSelf cancelUpload:nil];
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; });
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }];
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; [_uploadTask setProgressBlock:^(int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite) {
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //&amp;nbsp; &amp;nbsp; NSLog(@"\n%lld\n%lld\n%lld\n", bytesWritten, totalBytesWritten, totalBytesExpectedToWrite);
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; wSelf.progress.progress = totalBytesWritten*1.f/wSelf.fileSize.longLongValue;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }];


- (void)uploadNextChunk:(DBFILESUploadSessionCursor *)cursor atURL:(NSURL *)url
{
    NSData *data;
    
    DBUserClient *client = [DBClientsManager authorizedClient];
    unsigned long long offset = _fileHandle.offsetInFile;
    
    if (_fileSize.longLongValue - _fileHandle.offsetInFile &amp;gt; DB_CHUNK_SIZE) {
        data = [_fileHandle readDataOfLength:DB_CHUNK_SIZE];
    } else {
        data = [_fileHandle readDataOfLength:(_fileSize.longLongValue - _fileHandle.offsetInFile)];
    }
    
    LibraryViewController *__weak weakSelf = self;
    
    NSString *path = [NSString stringWithFormat:@"/%@", [[url path] lastPathComponent]];
    
    if (data.length &amp;lt; DB_CHUNK_SIZE) {
        DBFILESCommitInfo *info = [[DBFILESCommitInfo alloc] initWithPath:path];
        
        _finishTask = [client.filesRoutes uploadSessionFinishData:cursor commit:info inputData:data];
        [_finishTask setResponseBlock:^(DBFILESFileMetadata * _Nullable result, DBFILESUploadSessionFinishError * _Nullable routeError, DBRequestError * _Nullable networkError) {
            if (result) {
              NSLog(@"Finished uploading: %@", result);
            } else {
                NSLog(@"finishError last chunk: %@", routeError);
                NSLog(@"error: %@", networkError);
            }
            
            dispatch_async(dispatch_get_main_queue(), ^{
                [weakSelf cancelUpload:nil];
            });
        }];
        
        return;
    }
    
    _continueTask = [client.filesRoutes uploadSessionAppendV2Data:cursor inputData:data];
    [_continueTask setResponseBlock:^(DBNilObject * _Nullable result, DBFILESUploadSessionLookupError * _Nullable routeError, DBRequestError * _Nullable networkError) {
        if (result) {
            NSLog(@"Result, uploading chunk %@", result);
            DBFILESUploadSessionCursor *cursor = [[DBFILESUploadSessionCursor alloc] initWithSessionId:weakSelf.sessionId offset:[NSNumber numberWithUnsignedLongLong:weakSelf.fileHandle.offsetInFile]];
            [weakSelf uploadNextChunk:cursor atURL:url];
        } else {
            NSLog(@"finishError: %@", routeError);
            NSLog(@"error: %@", networkError);
            [weakSelf.fileHandle closeFile];
            weakSelf.fileHandle = nil;
            [weakSelf cancelUpload:nil];
            
        }
    }];
    
    [_continueTask setProgressBlock:^(int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite) {
       // NSLog(@"Continue: bytesWritten = %lld, total bytes written %lld", bytesWritten, totalBytesWritten);
        dispatch_async(dispatch_get_main_queue(), ^{
            weakSelf.progress.progress = ((totalBytesWritten + offset)*1.f/weakSelf.fileSize.longLongValue);
        });
    }];
}&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 29 May 2019 09:16:27 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Dropbox-chunks-upload-slow-amp-unpredictable/m-p/258135#M14976</guid>
      <dc:creator>DS6</dc:creator>
      <dc:date>2019-05-29T09:16:27Z</dc:date>
    </item>
    <item>
      <title>Re: Dropbox chunks upload slow &amp; unpredictable</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Dropbox-chunks-upload-slow-amp-unpredictable/m-p/258200#M14980</link>
      <description>It sounds like you're running in to general network reliability issues. While the API endpoints can technically accept up to 150 MB per request, we generally don't reccomend doing that much, as the connections can become unreliable due to various other factors.&lt;BR /&gt;&lt;BR /&gt;Using a much smaller chunk size is usually preferable, e.g., 8 MB. I recommend trying a few different sizes to see what's optimal for your scenario.</description>
      <pubDate>Fri, 29 Dec 2017 15:53:24 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Dropbox-chunks-upload-slow-amp-unpredictable/m-p/258200#M14980</guid>
      <dc:creator>Greg-DB</dc:creator>
      <dc:date>2017-12-29T15:53:24Z</dc:date>
    </item>
    <item>
      <title>Re: Dropbox chunks upload slow &amp; unpredictable</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Dropbox-chunks-upload-slow-amp-unpredictable/m-p/258203#M14983</link>
      <description>&lt;P&gt;I will try to conduct test with 8 MB chunks, but I see the issue with chunked approach is it doesn't work in&amp;nbsp;background on iOS. Is there any approach&amp;nbsp;to get the upload working in background?&lt;/P&gt;</description>
      <pubDate>Fri, 29 Dec 2017 16:00:31 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Dropbox-chunks-upload-slow-amp-unpredictable/m-p/258203#M14983</guid>
      <dc:creator>DS6</dc:creator>
      <dc:date>2017-12-29T16:00:31Z</dc:date>
    </item>
    <item>
      <title>Re: Dropbox chunks upload slow &amp; unpredictable</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Dropbox-chunks-upload-slow-amp-unpredictable/m-p/258269#M14984</link>
      <description>There's some information about background tasks here:&lt;BR /&gt;&lt;BR /&gt;&lt;A href="https://github.com/dropbox/dropbox-sdk-obj-c#note-about-background-sessions" target="_blank"&gt;https://github.com/dropbox/dropbox-sdk-obj-c#note-about-background-sessions&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;I don't believe there's a great solution though, as that applies to individual upload requests. Wrapping the upload session calls in a background task will get you a couple of minutes, but it won't fail gracefully.</description>
      <pubDate>Sat, 30 Dec 2017 00:37:00 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Dropbox-chunks-upload-slow-amp-unpredictable/m-p/258269#M14984</guid>
      <dc:creator>Greg-DB</dc:creator>
      <dc:date>2017-12-30T00:37:00Z</dc:date>
    </item>
    <item>
      <title>Re: Dropbox chunks upload slow &amp; unpredictable</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Dropbox-chunks-upload-slow-amp-unpredictable/m-p/258315#M14987</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://www.dropboxforum.com/t5/user/viewprofilepage/user-id/10"&gt;@Greg-DB&lt;/a&gt; wrote:&lt;BR /&gt;There's some information about background tasks here:&lt;BR /&gt;&lt;BR /&gt;&lt;A href="https://github.com/dropbox/dropbox-sdk-obj-c#note-about-background-sessions" target="_blank"&gt;https://github.com/dropbox/dropbox-sdk-obj-c#note-about-background-sessions&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;I don't believe there's a great solution though, as that applies to individual upload requests. Wrapping the upload session calls in a background task will get you a couple of minutes, but it won't fail gracefully.&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 30 Dec 2017 15:40:26 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Dropbox-chunks-upload-slow-amp-unpredictable/m-p/258315#M14987</guid>
      <dc:creator>tarasheth007gma</dc:creator>
      <dc:date>2017-12-30T15:40:26Z</dc:date>
    </item>
  </channel>
</rss>

