代码之家  ›  专栏  ›  技术社区  ›  Mohammad

如何使用Expo FileSystem.uploadAsync显示上传进度

  •  0
  • Mohammad  · 技术社区  · 2 年前

    我有一段代码如下,它将一个简单的文件上传为二进制文件,利用 expo文件系统 一切都很好。

    import * as FileSystem from 'expo-file-system';
    
    const res = await FileSystem.uploadAsync(uploadUrl, uri, {
      fieldName: 'file',
      httpMethod: 'PUT',
      uploadType: FileSystem.FileSystemUploadType.BINARY_CONTENT,
      headers: headers,
    });
    
    

    如何像简单的axios上传进度一样显示上传进度? 如果该功能没有实现,我如何仍然可以使用上传二进制文件 axios 以显示进度

    0 回复  |  直到 2 年前
        1
  •  1
  •   ankushlokhande    2 年前

    这应该可以解决您的问题:)

    const uploadTask = FileSystem.createUploadTask(crData.putUrl, media.path, {
        fieldName: 'file',
        httpMethod: 'PUT',
        uploadType: FileSystem.FileSystemUploadType.BINARY_CONTENT,
        headers: {
            'Content-Type': 'image/jpeg'
        }
    }, ({ totalBytesSent, totalBytesExpectedToSend }) => {
        const progress = parseFloat((totalBytesSent / (totalBytesExpectedToSend || 1)).toFixed(2));
        setUploadProgress(progress);
    });
    
    const result = await uploadTask.uploadAsync();
    
        2
  •  0
  •   Greg Fenton    2 年前

    查看文档 Expo FileSystem's uploadAsync ,似乎没有办法获得上传进度。您可能需要选择另一种机制进行上传;使用FileSystem来嘲笑文件的内容,然后使用另一种URL机制(例如axios中的onUploadProgress Request Config )上传内容。