获取UIImage,将其转换为多部分图像字符串并将其写入文本文件iOS

时间:2016-11-21 11:44:51

标签: ios objective-c uiimage

我需要做以下事情:

  1. 将UIImage转换为字节数组;
  2. 使用multipart获取字符串并将该字符串写入文本文件;
  3. 调用该文本文件以及其余服务的API 参数(请求)必须将其上传到服务器。
  4. 我试过但我无法获得应该写入文本文件的multipart字符串。

    我是初学者,如果有人可以建议我获取多部分图像字符串的方法,我将非常感谢。

    提前致谢!

1 个答案:

答案 0 :(得分:0)

使用下面这个可以写data到文件:我在控制台中有print写路径的路径,按finder -> goto finder检查写入的文件,并注意你的图像网址为HTTP前缀,如果是,请在App Transport Security Settings中设置Info.plist

objective-c

NSURLSession *session = [NSURLSession sharedSession];
NSURL *url = [NSURL URLWithString:@"https://sf-sponsor.b0.upaiyun.com/45751d8fcd71e4a16c218e0daa265704.png"];  // if http:please set `App Transport Security Settings` in your Info.plist

NSURLSessionTask *task = [session dataTaskWithURL:url
                                completionHandler:^(NSData *data, NSURLResponse *response, NSError* error) {


                                    NSLog(@"%@", [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil]);

                                    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, true);
                                    NSString *documentsDirectory = paths[0];
                                    NSLog(@"%@", documentsDirectory);
                                    NSFileManager * fm = [NSFileManager defaultManager];

                                    BOOL ifsucess = [fm createFileAtPath:[NSString stringWithFormat:@"%@/file.data", documentsDirectory] contents:data attributes:nil];

                                    if (ifsucess) {

                                        // success
                                    }else {

                                        // fail
                                    }



                                }];

[task resume];

swift

    /* swift */

    let path:String = "https://sf-sponsor.b0.upaiyun.com/45751d8fcd71e4a16c218e0daa265704.png"  // if http:please set `App Transport Security Settings` in your Info.plist
    let url:NSURL = NSURL.init(string: path)!
    let request = URLRequest.init(url: url as URL)

    let task = URLSession.shared.dataTask(with: request as URLRequest){ data, response, error in

        let paths:NSArray = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true) as NSArray
        let documentsDirectory = paths.object(at: 0)
        print(documentsDirectory)
        //let appFile = "\(documentsDirectory)/MyFile.text"  //

        if let dir = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first {

            let path = dir.appendingPathComponent("file.data")

            do {
                try data?.write(to: path, options: NSData.WritingOptions.atomic)
            }
            catch {/* error handling here */}

        }

    }

    task.resume()