2013-07-24 2 views
1

Мне нужно отправить мое изображение в Salesforce через мой iphone app.I попробовал эти вещи преобразованы в изображения -> байты -> base64 кодирование затем сохранить SFDC (Богатые полевые данные), это сделано отлично, но мне нужно сохранить как изображение .Здесь Мои коды, приведенные ниже (это не работает) наставит меня, как добиться того, чтобыОтправить вложение в Salesforce родной отдыха через ИОС SDK

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), которые необходимы обрабатывать мой запрос?

+0

Что вы хотите сказать о сохранении изображения? В документе Salesforce или приложении или что-то еще? –

+0

что угодно, мне нужно отправить изображение с моего iphone на sfdc? – Rams

+0

Хорошо, что не работает? Какую ошибку вы видите? –

ответ

0

Я создал классы отдыха верхушки, чтобы получить двоичные данные, а затем сохранить в SFDC (изображение, сохраненное в документах). Вот руководство, которое я назвал.

http://blogs.developerforce.com/developer-relations/2011/09/using-binary-data-with-rest.html

Также здесь учебник Как получить доступ к вершине WebService через мой ИОС.

http://techblog.appirio.com/2013/07/rest-with-apex-service-in-native-ios.html

0

Если вы хотите просто загружать двоичные данные в вложение и/или документ, вам не нужно вообще писать класс Apex, вы должны иметь возможность делать все через REST API.

Apex классы, как показано в сообщении в блоге, предназначены только для создания пользовательских веб-сервисов. Вы можете пойти по этому маршруту, если вы выберете, но это определенно не требуется для того, чего вы пытаетесь достичь.

+0

без вершины класс i не может сохранить мое изображение в sfdc, но теперь я могу сохранить свое изображение, используя класс apex – Rams

+0

Вы можете сохранить его в качестве изображения, если используете документ или вложение. Убедитесь, что вы указали правильный тип файла, если используете документ, или он не будет работать должным образом. –

+0

Я добавил здесь свой ответ. – Rams

1

NSData * MyData = [[NSData Alloc] инициализации]; // инициализация с содержимым файла

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"); 
}]; 
+0

Спасибо, что дал мне подсказку, которую мне нужно было получить. –

0

Чтобы сделать это так 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]; 
Смежные вопросы