【问题标题】:Video is uploaded as an image from iOS device, how to upload properly视频从iOS设备上传为图片,如何正确上传
【发布时间】:2019-08-29 13:32:53
【问题描述】:

我有一个应用程序可以从移动图库中获取图像/视频,然后将其中一个上传到服务器, 这是我采取的步骤,在 Android 上运行良好:

1-从移动存储中获取数据:

MediaLibrary.getAssetsAsync({
  first: 20,
  mediaType: [MediaLibrary.MediaType.video, MediaLibrary.MediaType.photo]
})

2-上传到服务器:

formData.append('images[]', {
    uri: localUri,  
    name: isVideo ? 'untitled.mp4'  : 'untitled',//for testing
    type: isVideo ? 'video/mp4' : 'image/jpeg'
})

axios.post(`url`, formData, {headers: headers,timeout:999999})

问题是视频作为图像上传(仅视频的第一帧),虽然它在 Android 上成功上传,但问题仅在 iOS 上存在。

检索到的文件的uri如下: assets-library://asset/asset.MP4?id=xxx&ext=MP4

快速笔记:

1 - 使用 Expo 中的 <Video> 组件可以在本地正常播放视频

2 - 我尝试使用 CameraRoll API,但它给出了相同的结果,并且有点错误

任何帮助将不胜感激

【问题讨论】:

    标签: ios react-native expo


    【解决方案1】:

    您可以更新到 expo SDK 36,您将能够通过使用 MediaLibrary.getAssetInfoAsync 返回的 localUri 来解决此问题

    例如

    // get asset id like B84E8479-475C-4727-A4A4-B77AA9980897/L0/001
    const info = await MediaLibrary.getAssetInfoAsync(asset.id)
    const uri = info.localUri // use this for upload
    

    在 github 上引用此评论。 https://github.com/expo/expo/issues/3177#issuecomment-510096711

    【讨论】:

    • 我在 expo SDK 40 上遇到了同样的问题,这解决了我的问题。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2010-12-10
    • 1970-01-01
    • 2014-06-15
    • 1970-01-01
    • 1970-01-01
    • 2017-02-27
    • 2021-10-18
    • 2015-05-17
    相关资源
    最近更新 更多