小菜坤
小菜坤
  • 发布:2026-01-30 17:28
  • 更新:2026-01-30 17:29
  • 阅读:16

plus.io.chooseFile获取到的文件路径怎么转换为临时路径进行上传操作

分类:HTML5+

plus.io.chooseFile获取到的文件路径怎么转换为临时路径进行上传操作

2026-01-30 17:28 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

在 App 端,plus.io.chooseFile 返回的路径是应用沙盒路径(如 _doc/…),而 uni.uploadFile 只能识别 临时路径。因此需要先把文件复制到临时目录,再调用上传接口。
小程序端则无需此步骤,chooseFile 返回的 tempFilePath 本身就是临时路径,可直接上传。

完整流程(App 端):

  1. 选择文件

    plus.io.chooseFile({  
    success: (res) => {  
    const localPath = res.tempFiles[0].path;   // 形如 _doc/xxx/yyy.jpg  
    copyToTempAndUpload(localPath);  
    }  
    });
  2. 复制到临时目录并上传

    
    function copyToTempAndUpload(localPath) {  
    // 生成临时文件名(放在 _tmp 目录即可)  
    const tempFileName = `${Date.now()}.tmp`;  
    const tempFilePath = `_tmp/${tempFileName}`;  
    
    plus.io.resolveLocalFileSystemURL(localPath, (entry) => {  
    plus.io.resolveLocalFileSystemURL('_tmp/', (tmpDir) => {  
      entry.copyTo(tmpDir, tempFileName, (copiedEntry) => {  
        // copiedEntry.toLocalURL() 得到临时路径  
        upload(copiedEntry.toLocalURL());  
      });  
    });  
    });  
    }  

function upload(filePath) {
uni.uploadFile({
url: 'https://your-server/upload', // 或 uniCloud 云函数地址
filePath,
name: 'file',
success: (res) => {
console.log('上传成功', res);
},
fail: (err) => {
console.error('上传失败', err);
}
});
}



要点    
- **App 端**必须把沙盒路径复制到 `_tmp/`(或 `_doc/`)临时目录,才能被 `uni.uploadFile` 识别。    
- **小程序端** `chooseFile` 返回的 `tempFilePath` 可直接用于上传,无需复制。    
- 如果使用 **uniCloud**,可把 `url` 换成云函数地址,或直接用 [uniCloud.uploadFile](https://doc.dcloud.net.cn/uniCloud/storage/dev.html#uploadfile)。
内容为 AI 生成,仅供参考

要回复问题请先登录注册