[英]Uploading multiple large json files in one go React-native to NodeJS
我正在嘗試將多個大型JSON文件從React-native上傳到Node js。
除非文件較大,否則文件將被上傳,在這種情況下,將不會嘗試一次上傳。
我懷疑:
由於上載代碼處於for循環中,因此該代碼正在開始上載,但不等待文件上載並開始上載下一個文件
有什么方法可以確保一次上傳每個文件?
syncFunction() {
var RNFS = require('react-native-fs');
var path = RNFS.DocumentDirectoryPath + '/toBeSynced';
RNFS.readDir(path)
.then((success) => {
for (let i = 0; i < success.length; i++) {
var fileName = success[i].name
var filePath = success[i].path
var uploadUrl = 'http://192.168.1.15:3333/SurveyJsonFiles/GetFiles/'
if (Platform.OS === 'android') {
filePath = filePath.replace("file://", "")
} else if (Platform.OS === 'ios') {
filePath = filePath
}
const data = new FormData();
data.append("files", {
uri: filePath,
type: 'multipart/form-data',
name: fileName,
});
const config = {
method: 'POST',
headers: {
'Accept': 'application/json',
},
body: data,
};
fetch(uploadUrl, config)
.then((checkStatusAndGetJSONResponse) => {
console.log(checkStatusAndGetJSONResponse);
this.moveFile(filePath, fileName)
}).catch((err) => {
console.log(err)
});
}
})
.catch((err) => {
console.log(err.message);
});
}
取決於數據,JSON文件將超過50Mb,因為它包含base64圖像數據,其大小將隨着用戶拍攝更多照片而增加。
當用戶記錄任何信息時,該應用將創建新文件。對於部分文件上傳,不會顯示錯誤消息。
this.moveSyncedFiles()將同步的文件移動到另一個文件夾,以使同一文件不會多次上傳
moveFile(oldpath, oldName) {
var syncedPath = RNFS.DocumentDirectoryPath + '/syncedFiles'
RNFS.mkdir(syncedPath)
syncedPath = syncedPath + "/" + oldName
RNFS.moveFile(oldpath, syncedPath)
.then((success) => {
console.log("files moved successfully")
})
.catch((err) => {
console.log(err.message)
});
}
事實證明,故障出在nodejs端,並且每次發現新文件時nodemon都會重新啟動服務器,因此我們只是將uploads文件夾移到了項目范圍之外
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.