在 UniApp 中,可以通过 wx.getFileSystemManager().readFile 将临时文件转换为 Base64 编码,并将编码后的数据发送给后端的 PHP 服务器解码保存到服务器上。以下是实现步骤:
1. 将临时文件转换为 Base64 编码uni.chooseImage({ success: (res) => { const filePath = res.tempFilePaths[0]; // 读取文件并转换为 Base64 uni.getFileSystemManager().readFile({ filePath: filePath, encoding: 'base64', success: (result) => { const base64Data = result.data; // 发送 Base64 数据到后端 uni.request({ url: 'https://your-backend-url.com/upload.php', method: 'POST', data: { fileData: base64Data, fileName: 'yourFileName.jpg' // 文件名可自定义 }, success: (uploadRes) => { console.log('上传成功', uploadRes.data); }, fail: (err) => { console.error('上传失败', err); } }); }, fail: (error) => { console.error('文件读取失败', error); } }); } });2. 后端 PHP 代码:解码并保存 Base64 文件
在 PHP 服务器端,接收并解码文件数据,再保存到服务器上。如下所示:
<?php // 获取 POST 中的文件数据和文件名 $fileData = $_POST['fileData']; $fileName = $_POST['fileName']; // 设置保存路径 $savePath = "uploads/" . $fileName; // 将 Base64 数据解码为二进制数据 $fileContent = base64_decode($fileData); // 保存文件到服务器 if (file_put_contents($savePath, $fileContent)) { echo json_encode(['status' => 'success', 'message' => 'File uploaded successfully.']); } else { echo json_encode(['status' => 'error', 'message' => 'Failed to save file.']); } ?>注意事项后端安全:确保服务器端对上传的 Base64 数据进行验证,以防止潜在的安全风险。文件名管理:避免文件名冲突,可以在文件名前增加时间戳或唯一标识符。目录权限:确保 PHP 有权限在 uploads 目录下写入文件。
网友回复
DLNA与UPnP的区别和不同?
苏超自建抢票app,通过先预约再抽签化解高并发抢票?
python如何让给电脑在局域网中伪装成电视接收手机的投屏图片视频播放?
如何结合python+js如何自己的视频编码与加密播放直播?
python如何在电脑上通过局域网将本地视频或m3u8视频投屏电视播放?
腾讯视频爱奇艺优酷vip电影电视剧视频如何通过python绕过vip收费直接观看?
有没有可免费观看全球电视台直播m3u8地址url的合集?
有没有实现观影自由的免vip影视苹果 CMS V10 API的可用url?
python如何实时检测电脑usb插入检测报警?
如何判断真人操作的鼠标移动直线轨迹与机器操作的轨迹?