2017-02-01 5 views
0

フォルダから画像のリストをアップロードし、bytestreamとしてデータベースに保存したい。私は、複数のファイルを選択するのではなく、画像を含むフォルダをangularjsに与えたいと思っています。責任コードの部分は以下の通りです。他の人のどれもが任意の画像を持っていないのに対し、フォルダから画像のリストをアップロードするAngularJs

$scope.uploadMultipleQuestions = function(e) { 
     var questionList = [] 
     var difficultyLevel = vm.question.difficultyLevel; 
     var theFiles = e.files; 
     for (var i = 0; i < theFiles.length; i++) { 
      var ques = {}; 
      ques.questionString = theFiles[i].name; 
      DataUtils.toBase64(theFiles[i], function(base64Data) { 
       $scope.$apply(function() { 
        ques.questionImage = base64Data; 
       }); 
       [![enter image description here][1]][1] 
      }); 
      ques.questionImageContentType = theFiles[i].type; 
      ques.questionString = theFiles[i].webkitRelativePath.split("/")[1]; 

      questionList.push(ques); 
      Question.uploadMultipleQuestions(questionList); 
     } 
     for (var i = 0; i < questionList.length; i++) { 
      console.log(questionList[i]); 
     } 
     //Question.uploadMultipleQuestions(questionList); 

    } 

しかし、問題は、私は私のログに以下の内容を取得しています。enter image description here

あなただけの最後のオブジェクトを見ることができるように(スクリーンショットは、以下に添付)は、画像データが含まれていますコンテンツ。

なぜこの問題が起こっているのか、同じ問題を解決する方法を教えてください。

+0

見る(http://stackoverflow.com/questions/37634049/how-to-print-all-the-txt-files-inside -a-folder-using-java-script)を使用します。 'DataUtils.toBase64'は結果を非同期的に返しますか? – guest271314

答えて

1

画像をbase64に変換するのに時間がかかるので、ques.questionImageが埋め込まれた後に画像をアップロードする必要があります。 [Javaスクリプトを使用して、フォルダ内のすべてのtxtファイルを印刷する方法]

var uploadMultipleQuestions = function(files, i, output) { 

    if (files.length == i) { 
     for(var j=0;j<output.length;j++) 
      console.log(output[j]); 

     return Question.uploadMultipleQuestions(output); 
    } 


    DataUtils.toBase64(files[i], function(base64Data) { 

     output.push({ 
      questionString: files[i].name, 
      questionImageContentType: files[i].type, 
      questionString: files[i].webkitRelativePath.split("/")[1], 
      questionImage: base64Data 
     }); 

     uploadMultipleQuestions(files, i+1, output); 

    }); 
} 

$scope.uploadMultipleQuestions =function(e){ 
    var theFiles = e.files; 
    uploadMultipleQuestions(theFiles, 0, []); 
} 
+0

ありがとうございます、 –

+1

@ TahseemAhmad、YW、うまくいけば、受け入れボタンを押してください。 –

+0

ここで起こっているのは、QuestionStringとQuestionImageContentTypeがすべてのファイルで同じになるということです。個々のファイル名を取得するにはどうすればよいですか? –

関連する問題