zoukankan      html  css  js  c++  java
  • 文件上传

    #pragma mark - uploadFile
    - (void)uploadFileToServerUrl:(NSString *)urlString fromlocalPath:(NSString *)filepath HTTPHeaderField:(NSDictionary *)dict success:(void(^)(NSURLResponse *response, NSData *data))success failure:(void(^)(NSError *error))failure{
      
        NSInputStream *inputFile = [NSInputStream inputStreamWithFileAtPath:filepath];
        [self uploadFileToServerUrl:urlString inputStream:inputFile HTTPHeaderField:dict success:success failure:failure];
    
    }
    
    - (void)uploadFileToServerUrl:(NSString *)urlString fileData:(NSData *)fileData HTTPHeaderField:(NSDictionary *)dict success:(void(^)(NSURLResponse *response, NSData *data))success failure:(void(^)(NSError *error))failure {
        
        NSInputStream *inputFile = [NSInputStream inputStreamWithData:fileData];
        [self uploadFileToServerUrl:urlString inputStream:inputFile HTTPHeaderField:dict success:success failure:failure];
        
    }
    
    - (void)uploadFileToServerUrl:(NSString *)urlString inputStream:(NSInputStream *)inputStream HTTPHeaderField:(NSDictionary *)dict success:(void(^)(NSURLResponse *response, NSData *data))success failure:(void(^)(NSError *error))failure {
        NSURL *url = [NSURL URLWithString:urlString];
        
        NSMutableURLRequest *mutableRequest = [NSMutableURLRequest new];
        mutableRequest = [NSMutableURLRequest requestWithURL:url];
        [mutableRequest setHTTPMethod:@"POST"];
        [mutableRequest setHTTPBodyStream:inputStream];
        
        for (NSString *key in dict) {
            [mutableRequest setValue:dict[key] forHTTPHeaderField:key];
        }
        
        NSURLRequest *request = mutableRequest.copy;
        
        NSOperationQueue *queue=[NSOperationQueue mainQueue];
        [NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {
            if (connectionError) {
                failure(connectionError);
                return ;
            }
            else {
                success(response, data);
            }
            
        }];
    }

    调用:

    NSData *imgData = UIImageJPEGRepresentation(image, 1.0);
        NSString *lengthStr = [NSString stringWithFormat:@"%lu",(unsigned long)imgData.length];
        
        NSDictionary *httpHeaderField = @{@"Content-Type" : @"image/jpeg", @"Content-Length" : lengthStr};
        
        [self uploadFileToServerUrl:serverURL fileData:imgData HTTPHeaderField:httpHeaderField success:^(NSURLResponse *response, NSData *data) {
            
            NSDictionary *dict = [data JSONValue];
            
            if (![dict[@"returnCode"] isEqualToString:@"000000"] || dict == nil) {
                LYYLog(@"上传失败");
                dispatch_async(dispatch_get_main_queue(), ^{
                    [SVProgressHUD showErrorWithStatus:@"上传失败"];
                });
                return ;
            }
            
            NSMutableString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding].mutableCopy;
            LYYLog(@"livenessDetectorFinished%@", str);
            [SVProgressHUD showSuccessWithStatus:@"上传成功"];
            
            dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
                NSString *js = [NSString stringWithFormat:@"livenessDetectorFinished('%@')",str];
                
                [self evaluateJSWithString:js];
            });
     
        } failure:^(NSError *error) {
            
            LYYLog (@"%s,error:%@", __FUNCTION__, error.localizedDescription);
            
            dispatch_async(dispatch_get_main_queue(), ^{
                [SVProgressHUD showErrorWithStatus:@"上传失败"];
            });
        }];
  • 相关阅读:
    promiseall 使用一个ajax就可以调全部数据
    PHP中include和require的区别详解和使用建议
    phpredis中的connect和pconnect的区别
    <a>标签中的href="javascript:;"是什么意思?
    PHP中关于时间,时间戳 时区的设置问题
    javascript 超狠恶毒的禁用 右键 按键 禁用开发者工具 方法
    安装NoSQL数据库类型的redis 和 memcache数据库及其扩展
    XMind思维导图软件
    PHP代码中解决出现中文乱码的问题
    (七)mybatis-plus之generator(ftl模板生成:lombok swagger2 controloer的crud)
  • 原文地址:https://www.cnblogs.com/sunjianfei/p/6566407.html
Copyright © 2011-2022 走看看