1
This commit is contained in:
@@ -100,6 +100,14 @@ typedef void(^KBNetworkDataCompletion)(NSData *_Nullable data,
|
||||
headers:(nullable NSDictionary<NSString *, NSString *> *)headers
|
||||
completion:(KBNetworkCompletion)completion;
|
||||
|
||||
/// 上传本地文件(multipart/form-data)
|
||||
- (nullable NSURLSessionDataTask *)uploadFile:(NSString *)path
|
||||
fileURL:(NSURL *)fileURL
|
||||
name:(NSString *)name
|
||||
mimeType:(NSString *)mimeType
|
||||
parameters:(nullable NSDictionary *)parameters
|
||||
headers:(nullable NSDictionary<NSString *, NSString *> *)headers
|
||||
completion:(KBNetworkCompletion)completion;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@@ -323,6 +323,42 @@ autoShowBusinessError:YES
|
||||
completion:completion];
|
||||
}
|
||||
|
||||
- (NSURLSessionDataTask *)uploadFile:(NSString *)path
|
||||
fileURL:(NSURL *)fileURL
|
||||
name:(NSString *)name
|
||||
mimeType:(NSString *)mimeType
|
||||
parameters:(NSDictionary *)parameters
|
||||
headers:(NSDictionary<NSString *, NSString *> *)headers
|
||||
completion:(KBNetworkCompletion)completion {
|
||||
if (!fileURL || !fileURL.isFileURL) {
|
||||
if (completion) {
|
||||
NSError *e = [NSError errorWithDomain:KBNetworkErrorDomain
|
||||
code:KBNetworkErrorInvalidResponse
|
||||
userInfo:@{NSLocalizedDescriptionKey: KBLocalized(@"Invalid file")}];
|
||||
completion(nil, nil, e);
|
||||
}
|
||||
return nil;
|
||||
}
|
||||
NSError *readError = nil;
|
||||
NSData *data = [NSData dataWithContentsOfURL:fileURL options:0 error:&readError];
|
||||
if (readError || data.length == 0) {
|
||||
if (completion) {
|
||||
NSError *e = readError ?: [NSError errorWithDomain:KBNetworkErrorDomain
|
||||
code:KBNetworkErrorInvalidResponse
|
||||
userInfo:@{NSLocalizedDescriptionKey: KBLocalized(@"Empty file data")}];
|
||||
completion(nil, nil, e);
|
||||
}
|
||||
return nil;
|
||||
}
|
||||
NSString *fileName = fileURL.lastPathComponent ?: @"upload.bin";
|
||||
return [self uploadFile:path
|
||||
fileData:data
|
||||
fileName:fileName
|
||||
mimeType:mimeType
|
||||
headers:headers
|
||||
completion:completion];
|
||||
}
|
||||
|
||||
|
||||
#pragma mark - Core
|
||||
|
||||
|
||||
Reference in New Issue
Block a user