[英]Send attachments to salesforce native rest sdk through ios
我需要通過我的iPhone應用程序將圖像發送到Salesforce。我已經嘗試過將圖像轉換為圖像->字節-> base64編碼,然后存儲sfdc(Rich數據字段),這是完美的方法,但是我需要另存為image。這是下面給出的我的代碼(不起作用)指導我如何實現
NSData *imageData = UIImagePNGRepresentation(imageView.image);
NSString *boundary = @"---------------------------14737809831466499882746641449";
SFRestRequest *request = [[SFRestRequest alloc] init];
[request setDelegate:self];
[request setEndpoint:kSFDefaultRestEndpoint];
[request setMethod:SFRestMethodPOST];
NSMutableData *body = [NSMutableData data];
[body appendData:[[NSString stringWithFormat:@"rn--%@rn",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:[NSString stringWithFormat:@"Content- Disposition: form-data; name=\"entity_document\"; filename=\"%@\"\r\n",@"Test.png"]] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Type: multipart/form-data\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:[NSString stringWithFormat:@"Description :\"%s\"\r\n","Marketing brochure for Q1 2011"]] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:[NSString stringWithFormat:@"Keywords :\"%s\"\r\n","marketing,sales,update"]] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:[NSString stringWithFormat:@"FolderId :\"%s\"\r\n","005D0000001GiU7"]] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:[NSString stringWithFormat:@"Name :\"%s\"\r\n","Marketing Brochure Q1"]] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[NSData dataWithData:imageData]];
[body appendData:[[NSString stringWithFormat:@"rn--%@--rn",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
NSString *attbody = [NSString stringWithFormat:@"{\"body\" : {\"Name\" :[{ \"type\" : \"image/jpeg\", \"image\" : \"%@\"}] } }",body];
[request setPath:[NSString stringWithFormat:@"/v23.0/sobjects/Document/"]];
[request setQueryParams:(NSDictionary *)[SFJsonUtils objectFromJSONString:attbody]];
[[SFRestAPI sharedInstance] send:request delegate:self];
是否有處理我的請求的任何類(Apex)?
NSData * myData = [[NSData alloc] init]; //使用文件內容初始化
NSString *b64 = [myData base64EncodedString];
NSDictionary *fields = @{
@"Name": @"Document Name.ext",
@"Body": b64,
@"ParentId": recordId
};
attachmentRequest = [[SFRestAPI sharedInstance] requestForCreateWithObjectType:@"Attachment" fields:fields];
[[SFRestAPI sharedInstance] sendRESTRequest:attachmentRequest failBlock:^(NSError *e) {
NSLog(@"Error");
} completeBlock:^(id dict){
NSLog(@"Uploaded");
}];
如果您只想將二進制數據上傳到附件和/或文檔,則根本不需要編寫Apex類,那么您應該能夠通過REST API進行所有操作。
鏈接的博客文章中顯示的Apex類僅用於創建自定義Web服務。 如果您選擇可以走這條路,但是對於您要實現的目標絕對不是必需的。
我創建了apex rest類來接收二進制數據,然后將其保存到SFDC(圖像保存在Documents中)。以下是我所參考的教程。
http://blogs.developerforce.com/developer-relations/2011/09/using-binary-data-with-rest.html
這也是教程如何通過我的ios訪問apex Web服務。
http://techblog.appirio.com/2013/07/rest-with-apex-service-in-native-ios.html
為了使View功能適用於Salesforce Admin GUI中附件中的圖像,您還需要ContentType字段:
UIImage *testImg = [UIImage imageNamed:@"someImageName"];
NSData *testImgData = UIImagePNGRepresentation(testImg);
NSString *b64 = [testImgData base64Encode]; // base64Encode declared in NSData+SFAdditions.h
NSDictionary *fields = @{
@"Name": @"someImage.png",
@"Body": b64,
@"ParentId": @"00Q50000016TuGIEA0", // of course put your Attachment Id here instead of mine
@"ContentType": @"image/png"
};
SFRestRequest *attachmentRequest = [[SFRestAPI sharedInstance] requestForCreateWithObjectType:@"Attachment" fields:fields];
[[SFRestAPI sharedInstance] send:attachmentRequest delegate:self];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.