簡體   English   中英

一站式上傳多個大型json文件到NodeJS

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM