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
并使用您获取的任何数字进行比较很有用。
我有上传不超过 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
并使用您获取的任何数字进行比较很有用。