gpt4 book ai didi

iphone - NSStream,获取读取的字节百分比

转载 作者:行者123 更新时间:2023-12-03 19:57:33 25 4
gpt4 key购买 nike

我正在将文件上传到服务器,使用 NSStream API 分块读取。我正在尝试显示一个显示上传进度的进度条。我无法找到可靠的解决方案来确定读入文件的字节数。更改文件和 block 大小,我仍然不断获取总字节数,或者读取的字节数为 93 或 212 之类的奇怪值。有谁有任何尝试实现此目标的提示吗?看起来应该很简单。

  // create the write stream
NSOutputStream *outputStream = [NSOutputStream outputStreamToFileAtPath:uploadTempFilename append:NO];
[outputStream open];

const char *UTF8String;
size_t writeLength;
UTF8String = [multipartBegin UTF8String];
writeLength = strlen(UTF8String);

size_t __unused actualWrittenLength;
actualWrittenLength = [outputStream write:(uint8_t *)UTF8String maxLength:writeLength];

NSLog(@"actualWrittenLength1 %d bytes)", actualWrittenLength);//this will be 908
// open the input stream
const size_t bufferSize = 128 ;
size_t readSize = 0;
uint8_t *buffer = (uint8_t *)calloc(1, bufferSize);

[inImageStream open];
while ([inImageStream hasBytesAvailable]) {
if (!(readSize = [inImageStream read:buffer maxLength:bufferSize])) {
break;
}


size_t __unused actualWrittenLength;


actualWrittenLength = [outputStream write:buffer maxLength:readSize];

NSLog(@"actualWrittenLength2 %d bytes)", actualWrittenLength);//this always outputs 128, until the last call which will be something like 22


}

//NSLog(@"NSStreamFileCurrentOffsetKey %d", [outputStream valueForKey:NSStreamFileCurrentOffsetKey]);
[inImageStream close];
free(buffer);


UTF8String = [multipartEnd UTF8String];
writeLength = strlen(UTF8String);
actualWrittenLength = [outputStream write:(uint8_t *)UTF8String maxLength:writeLength];

NSLog(@"actualWrittenLength3 %d bytes)", actualWrittenLength);//this will always be 42

[outputStream close];



NSInputStream *inputStream = [NSInputStream inputStreamWithFileAtPath:uploadTempFilename];

[HTTPRequest setContentType:contentType];
return [HTTPRequest performMethod:@"POST" onURL:url withInputStream:inputStream knownContentSize:fileSize];

最佳答案

您是否尝试过NSStreamFileCurrentOffsetKey的属性值?

CF-API 也可能值得关注。

如果需要,您可以子类 -[NSOutputStream write:maxLength:] 来跟踪当前位置。

关于iphone - NSStream,获取读取的字节百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9068046/

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