2016-07-12 13 views
0

このようにローカルでzipファイルを展開するようにアドオンを作ってみたい(here)。しかし、私はfirefox SDKを使用するときに問題があります。 のファイル入力とエラーがサポートされていない形式dataTypeではなく、ArrayBufferのパスを取得するときに何かが間違っているために読み取ることができません。Firefox SDKでJSZipを使用してファイルzipを読み取る方法

HTML

<input type="file" name="file" id="import" class="hide" /> 

myscript.js

var fileInput = document.getElementById('import'); 
fileInput.addEventListener('change', function(e) { 
    var zipFileToLoad = fileInput.files[0]; 
    var tampJson = []; 
    JSZip.loadAsync(zipFileToLoad) 
      .then(function(zip) { 
       console.dir(zip); 
       zip.forEach(function (relativePath, zipEntry) { 
        if(zipEntry.dosPermissions == null){ 
         alert('Permissions trouble !') 
        } 
        if(typeof(zipEntry['_data']['compressedContent']) != 'undefined'){ 
         //var text = String.fromCharCode.apply(null, new Uint8Array(zipEntry['_data']['compressedContent'])); 
         var text = new TextDecoder("utf-8").decode(zipEntry['_data']['compressedContent']); 
         var dec = text.toString(); 

         var json = JSON.parse(dec); 
         if(json != null){ 
          var keys = ['name', 'description', 'data', 'created_at', 'updated_at']; 
          keys.forEach(function(key){ 
           if (key in json){ 
            if(key == keys[keys.length - 1]){ 
             tampJson.push(json); 
            } 
           }else{ 
            dialog({ 
             title: "Warning", 
             description: "<b>Wrong format, </b> are you sure to continue?", 
             yesButton: "yes", 
             cancelButton: "No", 
             yesCallback: function() { 
              $(this).closest('.overlay').removeClass("active"); 
             }, 
             cancelCallback: function() { 
              $(this).closest('.overlay').removeClass("active"); 
              return false; 
             } 
            }); 
           } 
          }); 
         }else{ 
          alert('format parse gagal'); 
         } 
        } 
       }); 
       if(tampJson.length > 0){ 
        saveByImport(tampJson, 0); 
       }else{ 
        alert('Oops file empty'); 
       } 
      }, function (e) { 
       alert('Oops import fail '+ e); 
      }); 

コンソールでエラーすることはできません。私はちょうどfileinputからArrayBufferできません。 このスクリプトはchrome拡張機能では動作しますが、firefox sdkでは動作しません。 この問題を解決するために私を助けてください。

+0

具体的にどのように機能しませんか?あなたは何を期待していますか?何が起こるのですか?ブラウザコンソールではどのようなメッセージが表示されますか?どのファイルを読み込もうとしていますか? ** complete ** [mcve]を提供してください。これは実際にアドオンを持つための十分なコードを意味します。技術的にはすべてのコードが問題になる必要がありますが、GitHubリポジトリへのリンクさえも役立ちます。あなたが抱えている問題は、特にアドオンで提供したコードよりもはるかに多く依存しています。一般的に、私たちは、あなたを助けるためにあなたが持っている問題を複製することができる必要があります。 – Makyen

+0

あなたの質問がトピックになるように編集してください:デバッグのヘルプを求める質問( "**なぜこのコードは動作しませんか?**")には以下が含まれていなければなりません:•望ましい動作•特定の問題またはエラー* •それを再現するのに必要な最短コード* **。明確な問題文がない質問は、他の読者にとって有用ではありません。参照:* [mcve]、[ここではどのような話題を聞くことができますか](http://stackoverflow.com/help/on-topic)、[どのように良い質問をしますか](http ://stackoverflow.com/help/how-to-ask)。 – Makyen

+0

@Makyenありがとう、私はすでに私の質問を編集しています。私を助けてくれることを願って – richees

答えて

関連する問題