iOS上传前如何查看PDF文件大小?

How to check the PDF size before uploading in iOS?

我有上传不超过 2 MB 的 PDF 文件的要求。现在我正在使用 UIDocumentPickerViewController 浏览 PDF 文件。有什么方法可以检查 PDF 的大小是否大于 2 MB?我可以使用 NSByteCountFormatter 获得尺寸。代码如下:

NSData *fileData = [NSData dataWithContentsOfURL:url];
NSLog(@"Byte Length%@", [[NSByteCountFormatter new] stringFromByteCount:fileData.length]);
NSString *twoMB = [[NSByteCountFormatter new] stringFromByteCount:fileData.length];
NSString *allowedmem = @"2 MB";
if (twoMB > allowedmem) {
    NSLog(@"Greater than 2 MB");
} else {
    ViewMyPDFViewController *webview = [[ViewMyPDFViewController alloc]init];
    webview.productURL = url;
    [self presentViewController:webview animated:YES completion:nil];
}

我试过这段代码,但它在 if 条件下运行不佳。请告诉我我做错了什么。如何查看是否大于2MB?

您正在 if 条件内比较此表达式中的两个字符串:

twoMB > allowedmem

这是按字母顺序比较而不是数字比较。在某些情况下,这可能会为您提供正确的结果(例如“3 MB”>“2 MB”=> true)但在许多情况下它不会(例如“300 kB”>“2 MB” " => true).

您不需要 NSByteCountFormatter,因为您已经有了字节数。只需检查字节数是否超过 2 MB。例如,将其与 2E6:

进行比较
NSData *fileData = [NSData dataWithContentsOfURL:url];
NSUInteger pdfBytes = fileData.length;
NSUInteger allowedBytes = 2e6; // 2 MB is 2 million bytes, or 2 x 10 ^ 6
if (pdfBytes > allowedBytes) {
    NSLog(@"Greater than 2 MB");
} else {
    ViewMyPDFViewController *webview = [[ViewMyPDFViewController alloc]init];
    webview.productURL = url;
    [self presentViewController:webview animated:YES completion:nil];
}

请注意,这些上下文通常使用二进制系统,因此如果您想要更准确的话,2 MB 实际上是 2,097,152 字节。正如您所展示的,有更强大的涉及格式化程序的比较方法,但无论您使用哪种方法,您都应该小心地进行数字而不是字母比较。您可能还会发现创建一个您知道大小为 2 MB 的文件并在加载后获取其 .length 并使用您获取的任何数字进行比较很有用。