简体   繁体   English

通过iOS中的核心api Giver错误将图像上传到DropBox服务器

[英]Image upload to DropBox server via it's core api giver error in iOS

I am using DropBox core api OAuth 2.0 authentication and I am trying to upload UIImage via it's core api 我正在使用DropBox核心api OAuth 2.0身份验证,并且尝试通过其核心api上传UIImage

https://api-content.dropbox.com/1/files/ / https://api-content.dropbox.com/1/files/ /

found at https://www.dropbox.com/developers/core/docs ( /files (POST) ) https://www.dropbox.com/developers/core/docs(/ files(POST))中找到

my code is 我的代码是

-(void)uploadData:(NSData *)imageAsData and:(NSString *)fileName{

NSString *urlString=[NSString stringWithFormat:@"https://api-content.dropbox.com/1/files/dropbox/Apps?access_token=%@",dropBoxToken];


NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init] ;
[request setURL:[NSURL URLWithString:urlString]];
[request setHTTPMethod:@"POST"];


NSString *boundary = @"---------------------------14737809831466499882746641449";
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
[request addValue:contentType forHTTPHeaderField: @"Content-Type"];


NSMutableData *body = [NSMutableData data];

[body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];

[body appendData:[[NSString stringWithFormat:@"Content-Disposition: attachment; name=\"attachement\"; filename=\"%@\";",fileName] dataUsingEncoding:NSUTF8StringEncoding]];


[body appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[NSData dataWithData:imageAsData]];
[body appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[request setHTTPBody:body];




NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];

NSLog(@"returnString=%@",returnString);

where imageAsData in NSData of a image and fileName is "abc.jpg". 其中图像和文件名的NSData中的imageAsData为“ abc.jpg”。

output of returnString is {"error": "file parameter value 'None' is invalid"} returnString的输出为{“ error”:“文件参数值'None'无效”}

I don't know why this problem occurs please help me. 我不知道为什么会出现此问题,请帮帮我。

Please, save yourself a lot of trouble and use the far simpler files_put endpoint instead. 请避免麻烦,请使用更简单的files_put端点。 (There's a reason it's recommended in the documentation.) (在文档中建议这样做是有原因的。)

Rough editing of your code (untested): 粗略编辑您的代码(未经测试):

-(void)uploadData:(NSData *)imageAsData and:(NSString *)filePath {

    NSString *urlString=[NSString stringWithFormat:
        @"https://api-content.dropbox.com/1/files_put/dropbox/%@?access_token=%@",
        filePath, dropBoxToken];

    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
    [request setURL:[NSURL URLWithString:urlString]];
    [request setHTTPMethod:@"PUT"];

    [request setHTTPBody:imageAsData];

    NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
    NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];

    NSLog(@"returnString=%@",returnString);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM