繁体   English   中英

从照片库中选择视频时,文件大小仅适用于 iOS 13.2 上 Ionic 中的视频

[英]File size is 0 only for videos in Ionic on iOS 13.2 when selecting videos from Photo Library

在我的 Ionic3 应用程序中,我正在计算文件大小,如下所示。

HTML

<div>
  <input type="file" accept="*" (change)="onSelect($event)">
  <button ion-button (click)="calcSize()">calculate size</button>
</div>
<p>Size: {{ size }}</p>

TS

  file: File;
  size: number;

  onSelect(event: any) {

    this.file = event.target.files[0];
  }
  calcSize() {

    this.size = this.file.size;
  }

以上代码在 iOS 13.2 以下的所有 Android 设备和 iOS 设备上完美运行。

但是在大于 13.2 的 iOS 设备上从照片库中选择视频时, size为 0 仅适用于视频文件

但是从 iCloud Drive 中选择视频时效果很好。

非常感谢任何帮助。

StackBlitz上查找问题。

我认为它不是离子错误。 规格说明如下:

获取时,符合要求的用户代理必须返回总字节数

https://w3c.github.io/FileAPI/

似乎是一个 ios 错误。

我一直在努力寻找解决方案超过 7 天。 我将我的发现作为答案发布,因为它将帮助面临此问题的人。

实际上,我的目的是将带有其他数据的文件上传到Rest API 这些功能仅在版本为13.2iOS设备上失败。 我找不到解决方案,我决定改变整个实现。 然后我使用相机插件和文件插件从照片库中获取 select 视频。 该实现也仅在版本为13.2iOS设备上存在相同的问题。

当使用相机插件在所选视频文件的文件插件中使用readAsDataURL(path, file)readAsArrayBuffer(path, file)readAsBinaryString(path, file)方法时,它给出了FileError 1 (未找到错误)。

问题出在相机插件中。 此错误的原因是照片库资产 url 在 iOS 13 上无效 为此存在Git 集线器问题

我在This Link上找到了解决此问题的临时方法。

我在platforms/ios中手动编辑了src/ios/CDVCamera.hsrc/ios/CDVCamera.m ,如下。

CDVCamera.h

@property (strong) CDVCameraPicker* pickerController;
@property (strong) NSMutableDictionary *metadata;
@property (strong) NSDictionary *latestMediaInfo;// Newly added line
@property (strong, nonatomic) CLLocationManager *locationManager;
@property (strong) NSData* data;

CDVCamera.m

__weak CDVCameraPicker* cameraPicker = (CDVCameraPicker*)picker;
__weak CDVCamera* weakSelf = self;

self.latestMediaInfo = info;// Newly added line

dispatch_block_t invoke = ^(void) {
    __block CDVPluginResult* result = nil;

希望这可以帮助面临这个问题的人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM