Objective-C Stripe: Create a File Upload

Back to Index

Uploads a file to Stripe.

Documentation: https://stripe.com/docs/api/curl#create_file_upload

CURL Command

curl https://files.stripe.com/v1/files \
   -u STRIPE_SECRET_KEY: \
   -F purpose=dispute_evidence \
   -F file="@/path/to/a/file.jpg"

Objective-C Example

#import <CkoRest.h>
#import <CkoStream.h>
#import <NSString.h>
#import <CkoJsonObject.h>

CkoRest *rest = [[CkoRest alloc] init];
BOOL success;

//  URL: https://files.stripe.com/v1/files
BOOL bTls = YES;
int port = 443;
BOOL bAutoReconnect = YES;
success = [rest Connect: @"files.stripe.com" port: [NSNumber numberWithInt: port] tls: bTls autoReconnect: bAutoReconnect];
if (success != YES) {
    NSLog(@"%@%d",@"ConnectFailReason: ",[rest.ConnectFailReason intValue]);
    NSLog(@"%@",rest.LastErrorText);
    return;
}

[rest SetAuthBasic: @"STRIPE_SECRET_KEY" password: @""];

rest.PartSelector = @"1";
[rest AddHeader: @"Content-Disposition" value: @"form-data; name=\"purpose\""];
[rest SetMultipartBodyString: @"dispute_evidence"];

rest.PartSelector = @"2";
CkoStream *fileStream2 = [[CkoStream alloc] init];
fileStream2.SourceFile = @"/path/to/a/file.jpg";
[rest AddHeader: @"Content-Disposition" value: @"form-data; name=\"/path/to/a/file.jpg\"; filename=\"/path/to/a/file.jpg\""];
[rest AddHeader: @"Content-Type" value: @"image/jpeg"];
[rest SetMultipartBodyStream: fileStream2];

rest.PartSelector = @"0";

[rest AddHeader: @"Expect" value: @"100-continue"];

NSString *strResponseBody = [rest FullRequestMultipart: @"POST" uriPath: @"/v1/files"];
if (rest.LastMethodSuccess != YES) {
    NSLog(@"%@",rest.LastErrorText);
    return;
}

CkoJsonObject *jsonResponse = [[CkoJsonObject alloc] init];
[jsonResponse Load: strResponseBody];

NSString *id = 0;
NSString *object = 0;
int created;
NSString *filename = 0;
NSString *purpose = 0;
int size;
NSString *type = 0;
NSString *url = 0;

id = [jsonResponse StringOf: @"id"];
object = [jsonResponse StringOf: @"object"];
created = [[jsonResponse IntOf: @"created"] intValue];
filename = [jsonResponse StringOf: @"filename"];
purpose = [jsonResponse StringOf: @"purpose"];
size = [[jsonResponse IntOf: @"size"] intValue];
type = [jsonResponse StringOf: @"type"];
url = [jsonResponse StringOf: @"url"];

Sample JSON Response Body

{
  "id": "file_1BnEEuGswQrCoh0XqB3XkqAg",
  "object": "file_upload",
  "created": 1516661888,
  "filename": "path",
  "purpose": "sigma_scheduled_query",
  "size": 500,
  "type": "csv",
  "url": "https://stripe-upload-api.s3.amazonaws.com/uploads/file_1BnEEuGswQrCoh0XqB3XkqAg?AWSAccessKeyId=KEY_ID\u0026Expires=TIMESTAMP\u0026Signature=SIGNATURE"
}