iOS解析如何通过URL下载文件

天哪

我正在为我的聊天应用程序解析。上传文件时,我会保留该URL,并将该URL发送给其他用户,然后其他用户可以通过此URL下载文件。

这是我上传文件的代码:

+ (void)uploadBlob:(NSData *)blob fileName:(NSString *)fileName type:(NSString *)type {
    if ([self private_checkCloudForbidden]) {
        return;
    }

    if (CHOSEN_SERVER_DATABASE == ServersQuickBlox) {
        if ([Format isThumbnailWithBlobFileName:fileName]) {
            type = @"image";
        }

        NSString *qbContentType = @"";
        if ([type isEqualToString:@"image"]) {
            qbContentType = @"image/jpg";
        }

        [QBContent TUploadFile:blob fileName:fileName contentType:qbContentType isPublic:YES delegate:[CloudDelegate sharedInstance]];


    }

    else if (CHOSEN_SERVER_DATABASE == ServersParse) {

        PFFile *file = [PFFile fileWithName:fileName data:blob];

        [file saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
            if (error){
                NSLog(@"Error: %@", [[error userInfo] objectForKey:@"error"]);
            } else {

                [CloudHandler didUploadBlobWithFileName:file.name blobID:file.url];

            }
        }];

    }
}

在CloudHandler didUploadBlobWithFileName方法中,我将文件的URL保存为blobID。这是使用QuickBlox时通过blobID / url下载文件的方式:

+ (void)downloadWithBlobId: (NSString *)blobID {
    if ([self private_checkCloudForbidden]) {
        return;
    }


    if (CHOSEN_SERVER_DATABASE == ServersQuickBlox) {


        [QBContent TDownloadFileWithBlobID:blobID.integerValue delegate:[CloudDelegate sharedInstance]];

    }

    else if (CHOSEN_SERVER_DATABASE == ServersParse) {

        //TODO: HOW TO DOWNLOAD FILES?

    }

}

我没有找到通过URL下载文件的API。(如果解析确实提供了无用的url或blobID,则有点奇怪

编辑:

我不使用“文件”类型的属性的原因:

1. I can't store 'file' on local database. It has to be the blobID or URL. 

2. when I send a rich message, I can send along the blobID, so that the receiver does not have to fetch the object first before downloading the binary. 
伊莱·布拉金斯基(Eli Braginskiy)

您应该传输PFObject而不是URL。像这样:

PFObject *object; //the object you have
PFFile *soundFile = object[@"file"];
[soundFile getDataInBackgroundWithBlock:^(NSData *soundData, NSError *error) {
        if (!error) {
            [self saveSoundFileToDocuments:soundData fileName:object[@"fileName"]];
        }
    }
    progressBlock:^(int percentDone) {

    }];

- (void)saveSoundFileToDocuments:(NSData *)soundData fileName:(NSString *)fileName {
    NSString *docsDir;
    NSArray *dirPaths;

    dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    docsDir = [dirPaths objectAtIndex:0];
    NSString *databasePath = [[NSString alloc] initWithString: [docsDir stringByAppendingPathComponent:[DataAcesss encryptText:fileName]]];
    [soundData writeToFile:databasePath atomically:YES];
}

这样,您可以下载文件并拥有文件名。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用Selenium Webdriver通过URL列表下载文件

来自分类Dev

如何通过Meteor下载文件?

来自分类Dev

如何通过HTTP下载文件?

来自分类Dev

如何从http url下载文件?

来自分类Dev

如何使用Express从url下载文件?

来自分类Dev

我如何从http URL解析xml文件而不下载文件并打印所需的字符串?

来自分类Dev

从URL下载文件

来自分类Dev

如何通过URL下载文件然后获取其名称

来自分类Dev

如何通过附加php变量从其他URL下载文件

来自分类Dev

如何通过附加php变量从其他URL下载文件

来自分类Dev

如何通过附加php变量从其他URL下载文件

来自分类Dev

如何通过附加php变量从其他URL下载文件

来自分类Dev

你如何通过代理通过蚂蚁下载文件

来自分类Dev

如何下载文件

来自分类Dev

如何下载文件?

来自分类Dev

通过身份验证从url下载文件

来自分类Dev

等待直到通过webClient从URL下载文件

来自分类Dev

通过 selenium 和 phantomjs 从动态 url 下载文件

来自分类Dev

通过Yii下载文件

来自分类Dev

通过Ajax下载文件

来自分类Dev

如何使用python中的Web URL下载文件?通过浏览器下载有效,但不能通过python请求下载

来自分类Dev

下载文件WKWebView iOS

来自分类Dev

iOS Swift下载文件

来自分类Dev

如何通过Chrome内容脚本下载文件?

来自分类Dev

如何通过R从互联网下载文件

来自分类Dev

浏览器如何下载文件(通过HTTP或FTP)

来自分类Dev

如何使用GEB通过表单提交下载文件

来自分类Dev

如何使用Vala通过HTTP下载文件?

来自分类Dev

如何通过javascript从tomcat服务器下载文件?