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

Posted

技术标签:

【中文标题】从照片库中选择视频时,文件大小仅适用于 iOS 13.2 上 Ionic 中的视频【英文标题】:File size is 0 only for videos in Ionic on iOS 13.2 when selecting videos from Photo Library 【发布时间】:2019-11-21 12:27:22 【问题描述】:

在我的 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;
  

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

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

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

非常感谢任何帮助。

在StackBlitz 上查找问题。

【问题讨论】:

这对我来说似乎是一个错误,您是否已向 github 中的正确 repo 报告过? @ ZetaPR 谢谢,是的,我向 ionic repo 报告了。是否有任何回购报告 我已经看到报告的错误并移至新的 Ionic 存储库。对于任何想要关注它的人:github.com/ionic-team/ionic-v3/issues/1077 【参考方案1】:

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

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

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

似乎是一个 ios 错误。

【讨论】:

感谢您的帮助。我向你提供赏金。【参考方案2】:

我为寻找解决方案苦苦挣扎了 7 天多。我将我的发现作为答案发布,因为它将帮助面临此问题的人。

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

File 插件中使用 readAsDataURL(path, file)readAsArrayBuffer(path, file)readAsBinaryString(path, file) 方法时使用 Camera 插件在选定的视频文件上提供 FileError 1(未找到错误)。

问题出在 Camera 插件中。此错误的原因是 照片库资产 url 在 iOS 13 上无效。为此有一个Git Hub Issue

我在 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;

希望这对面临此问题的人有所帮助。

【讨论】:

以上是关于从照片库中选择视频时,文件大小仅适用于 iOS 13.2 上 Ionic 中的视频的主要内容,如果未能解决你的问题,请参考以下文章

UIImagePickerController allowedEditing=YES 仅适用于视频

如何仅为从 iOS 中的照片库中选择的视频设置 UIImagePickerController 的allowEditing?

我需要一个意图来选择具有特定格式的视频

Media.Plugin 仅适用于 Google Photo

如何使用 iPad 访问我的照片库和摄像机

iphone如何看手机中视频大小