gpt4 book ai didi

ios - NSURLSession 将文件大小限制为 100KB

转载 作者:行者123 更新时间:2023-11-29 05:15:25 25 4
gpt4 key购买 nike

我不确定发生了什么,但我有一个代码可以将图像发送到我的 Mac 上运行的服务器。当我将 UIImageJPEGRepresentation 设置为 0.1 质量时,它工作得很好。但任何高于此值的内容(如下所示)都会使打印服务器崩溃。看起来最大文件大小是 100KB,因为这是质量为 0.1 时的文件大小。

UIImage *newImage = [UIImage imageNamed:@"Movies.jpg"];

NSData *imageData = UIImageJPEGRepresentation(newImage, 1.0);
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *printip = [defaults valueForKey:@"printip"];
NSString * valueToSave1 = [NSString stringWithFormat:@"http://%@:45500", printip];
NSString *postLength = [NSString stringWithFormat:@"%lu", (unsigned long)[imageData length]];
NSLog (@"POST LENGTH: %@", postLength);


NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration];
sessionConfiguration.discretionary = false;
sessionConfiguration.timeoutIntervalForRequest = 30.0;
sessionConfiguration.timeoutIntervalForResource = 60.0;
sessionConfiguration.requestCachePolicy = NSURLRequestReloadIgnoringLocalCacheData;

// Create the session
// We can use the delegate to track upload progress
NSURLSession *session = [NSURLSession sessionWithConfiguration:sessionConfiguration delegate:self delegateQueue:nil];

// Data uploading task. We could use NSURLSessionUploadTask instead of NSURLSessionDataTask if we needed to support uploads in the background
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:valueToSave1]];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];

[request setHTTPBody:imageData];

NSURLSessionDataTask *uploadTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
// Process the response
}];
[uploadTask resume];

最佳答案

有一些可能的问题:

  1. 您的服务器代码可能只是配置为不允许上传超过特定大小。这并不是一种罕见的做法(以避免过多的存储使用、图像太大、防止不良行为者上传其他大型负载等)。

  2. 您的请求可能会超时,因为上传此较大资源所需的时间太长。

  3. 在创建使用图像数据预填充 httpBody 的请求时,您可能会耗尽内存。您可以使用 uploadtaskwithrequest:fromFile:completionHandler: 来减少此峰值内存使用量.这可以减少上传时的内存使用峰值。

选项 1 是最有可能出现的问题,但我们不必猜测。上传大于 100kb 的资源并查看错误代码或响应正文。这会准确地告诉您出了什么问题。

<小时/>

假设您最终需要减小资源大小,值得注意的是,质量为 0.1 的 JPEG 通常会因各种 JPEG“伪影”而严重降级。我个人坚持使用 0.7 左右的质量值,如果资源仍然太大,请减小图像尺寸。例如,我可能会减少到质量为 0.7(或其他)的 1200×800,而不是质量为 0.1 的 3000×2000 图像。

关于ios - NSURLSession 将文件大小限制为 100KB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59236332/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com