(笔记)RN aliyun-oss-react-native 阿里云上传

本文介绍如何修改Aliyun OSS React Native库,解决上传文件ContentType固定问题,通过调整代码逻辑,根据不同文件类型(图片或mp4)设置正确的ContentType,确保文件上传后能在服务器正确解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安卓10记得在AndroidManifest加        android:requestLegacyExternalStorage="true"

aliyun-oss-react-native  挺好用 但是上传他的contentType 是写死的 很尴尬  导致上传到服务器上打开链接会下载

我按照公司需求修改成上传图片和mp4 

node_modules\aliyun-oss-react-native\android\src\main\java\com\reactlibrary\AliyunUploadManager.java

asyncUpload 方法

metadata.setContentType("application/octet-stream");

改成

if(sourceFile.substring(sourceFile.lastIndexOf(".") + 1).equals("jpg")){
metadata.setContentType("image/jpeg");
}else{
metadata.setContentType("video/mp4");
} 

可以直接安装我修改后的依赖 

github GitHub - leif0419/aliyun-oss-react-native  

yarn add git+https://github.com/leif0419/aliyun-oss-react-native

gitee   https://gitee.com/leif0419/aliyun-oss-react-native.git

yarn add git+https://gitee.com/leif0419/aliyun-oss-react-native.git

### 替代 aliyun-oss-react-native 的最新方案 在现代 React Native 应用开发中,如果不想依赖 `aliyun-oss-react-native` 来实现文件上传阿里云 OSS 功能,则可以通过原生 HTTP 请求配合阿里云 OSS 提供的签名直传技术来完成这一操作。这种方法不仅减少了对外部库的依赖,还提供了更高的灵活性和可控性。 #### 使用 REST API 实现文件上传 阿里云 OSS 提供了完善的 RESTful 接口文档[^4],开发者可以直接利用这些接口构建自己的上传逻辑。具体而言,可以采用以下步骤: 1. **获取临时凭证** 为了保障安全性,通常不会直接暴露用户的 Access Key 和 Secret Key 给前端应用。而是由后端生成一个带有时效性的 STS Token(Security Token Service),该 token 包含访问 OSS 所需的所有必要信息。 2. **构造 POST 数据结构** 根据阿里云 OSS 文档中的说明,需要准备一系列字段作为表单提交的一部分。其中包括但不限于 policy、signature、key 等重要组成部分[^5]。 3. **发起 multipart/form-data 类型请求** 最终通过 JavaScript 中的 Fetch API 或 Axios 发起一个多部分形式编码的数据传输过程即可达成目的。 ##### 示例代码展示 ```javascript // 假设已经从前端接收到所有必要的参数 function uploadToOSS(file, config) { let formData = new FormData(); Object.keys(config).forEach(key => { formData.append(key, config[key]); }); // 添加实际要上传的文件对象 formData.append('file', file); fetch('<your-upload-url>', { method: 'POST', body: formData, }).then(response => response.json()) .then(data => console.log('Success:', data)) .catch(error => console.error('Error:', error)); } ``` 此函数接收两个主要参数:一个是待发送出去的实际媒体资源;另一个则是来自后台计算所得的一组配置项集合[^6]。 --- ### 结合 Taro 框架进行多端适配 考虑到某些情况下可能希望统一管理各平台间的差异点,那么引入像 Taro 这样的框架将会是一个不错的选择。它允许可视化界面层面上做到最大程度复用的同时兼顾到了小程序以及其他环境下的特殊需求处理[^7]。 例如当项目决定采纳 Taro 后,在其中依然能沿用前述提到过的基于标准协议栈的做法来进行静态资产同步作业。与此同时得益于其内置插件机制的支持,甚至还可以更加便捷地定制属于自身的专属解决方案。 --- ### 安全性和性能考量 无论采取何种途径实施最终的功能模块,都应当重视以下几个方面的因素: - 加强身份验证措施防止恶意攻击行为发生; - 对超时重试次数加以限制以免造成不必要的负担; - 在条件允许的情况下优先选用 CDN 缓存加速加载速度等等[^8]。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值