node.js - 如何使用 react native fs 将选定的文件发送到节点服务器?
问题描述
我正在使用https://github.com/itinance/react-native-fs从 react-native 客户端上传文件,但我的 nodejs 服务器没有收到它。顺便说一句,我使用 react-native-document-picker https://github.com/Elyx0/react-native-document-picker从 Android 文件系统中选择文件。这是我的客户端应用程序的代码;
async uploadToNode() {
let testUrl = this.state.multipleFile[0].uri; //content://com.android.providers.media.documents/document/image%3A7380
const split = testUrl.split('/');
const name = split.pop();
const setFileName = "Img"
const inbox = split.pop();
const realPath = `${RNFS.TemporaryDirectoryPath}${inbox}/${name}`;
const uploadUrl = "http://localhost:8082/uploadToIpfs";
var uploadBegin = (response) => {
const jobId = response.jobId;
console.log('UPLOAD HAS BEGUN! JobId: ' + jobId);
};
var uploadProgress = (response) => {
const percentage = Math.floor((response.totalBytesSent/response.totalBytesExpectedToSend) * 100);
console.log('UPLOAD IS ' + percentage + '% DONE!');
};
RNFS.uploadFiles({
toUrl: uploadUrl,
files: [{
name: setFileName,
filename:name,
filepath: realPath,
}],
method: 'POST',
headers: {
'Accept': 'application/json',
},
begin: uploadBegin,
beginCallback: uploadBegin, // Don't ask me, only way I made it work as of 1.5.1
progressCallback: uploadProgress,
progress: uploadProgress
})
.then((response) => {
console.log(response,"<<< Response");
if (response.statusCode == 200) { //You might not be getting a statusCode at all. Check
console.log('FILES UPLOADED!');
} else {
console.log('SERVER ERROR');
}
})
.catch((err) => {
if (err.description) {
switch (err.description) {
case "cancelled":
console.log("Upload cancelled");
break;
case "empty":
console.log("Empty file");
default:
//Unknown
}
} else {
//Weird
}
console.log(err);
});
}
我不确定从客户端应用程序获取文件的 nodejs 代码是否正确。这是我的服务器代码;
app.post('/uploadToIpfs', (req, res) => {
// network.changeCarOwner(req.body.key, req.body.newOwner)
// .then((response) => {
// res.send(response);
// });
// var fileName = "Img";
// if(req.name == fileName){
// console.log(req.filename);
// res.send("Passed")
// }else{
// res.send("failed")
// }
console.log(req.files[0].filename);
res.send("Passed")
});
app.listen(process.env.PORT || 8082);
解决方案
推荐阅读
- python-3.x - 如何将 linux 终端命令发送到 python 后台进程 $test.py &
- c# - EF6 表拆分和异常“ReferentialConstraint 中的依赖属性映射到存储生成的列。列:'Id'。”
- google-bigquery - 在 BigQuery 中转置输出
- java - 如何使用 rxjava 进行异步改造调用。我必须异步拨打 100 多个电话
- swiftui - SwiftUI - 将文本视图的中心始终设置在绝对固定的位置
- arrays - 将数组中的两个对象组合成新对象?
- c# - C#比较2个txt文件并找出差异
- python - 使用 pd.read_excel 忽略的索引名称
- javascript - 故障跟踪错误“提供的元数据无效”
- java - Firebase 数据库参考错误:没有这样的实例字段:'mDatabaseReference'