2017-08-08 1 views
0

Ich versuche, URI-Daten einer .7z-Datei in eine .7z-Datei zu konvertieren. Ich benutze Create a file with data ur als eine Referenz, aber ich muss etwas falsch machen, da ich es nicht funktionieren kann.Umwandeln von Daten-URI in 7z

Hier ist, was ich habe:

testData = {}; 
testData['application/x-7z-compressed'] = 'data:;base64,N3q8ryccAAQ9oftpCQoAAAAAAABaAAAAAAAAAEWEdGngCm8KAV0ARJQFxHon9vfuiY5QkIizqtVQOBGANPeca4QBmYkU+xl0vSo0unMUAXAps1eRa2pSM4v1BbfFdQTRV14VG+hh33uTXPUs2E/vn7WJG5j7l+CxeIBPtOphAZFAke0oMO6LvsQETmq6qQ4+tp0ATrrA7lF3XQLaKI5Pw4sjLzNDpWEUElVc3mZ4mb6D5zFyPy9lUxxTiLoBpF3XT192vk0iKjRUA3D1Fqvr8HBXNEQGIfWJVVEWsVigCSQo6X+DHusdwLvPK+132h9Gb2965peSZb1XZt/OlRqeXlqwDAkvH4D2/qHpXIqB+AfG92S81gfXLK48zk7K6FuEzkqcrpycJ/km12t0fxFrORAqqJRFU13FPgsMbcEIDZVaxGI66YOShpjL/pDyiqM5oUb8bJJfhiOPPHLEXi8vIYV5SYsbddoqeZja2FpgfIBY815QC5qDrVd6DnBaB5GnZGD3YfzDMMovm7dYkwD2xF+1hyu034NE1BzWomGRg1jlltO1TnxsPTPuE8MijBOczb9wP6d7/ezJH2hk52vRrrDQK4P6U6e1qwX9XMvNEkZgpu31iKlthMzDbf4Gun2lV3l3N+xDn6qLhXa6LNGC7/VnAXOF7eZTxJhtVtcMJZ8eal6AjLTf1olPZLnL4ZazhWeh7omtT45RIuJs58dPnJxz4zqC+B1t02wFNbyWDmtBLF9TTHuo0BHTysfkZpYngW2QZsRUG71tgSoDWBiQQ1mytXIKuIeyoYG4aRr6TYPSto89VV9X8keDn8APnUCa0p75eyL7U9ffAmgQt92zTvGH8NFgGUuMjfy/KJDZ7zdUXesGTcH1PZw0Yjly90v+RbmLVoyWIUGug8TAsttsFGhnau9kumoWDeJjr5f3Zx12pH80+YKsp9NeuFk/S8tb8VRZ1JgCCdlc8vOXzAl/ZSKOJ1rtYU3RidCBo/CHvBQtCUlo85RnJ4sRW05SX8Ya/TNT6kEQj4Q5k41s5hR2boF6qleCfbhA/kKi7Eix1ThCBwIjMZnyLRAYwtJJMwUGbpQcukobFDuDBd1s1bNkdhHqFPSXnBmmzllCUgDI/1pw8MSpOhkKiT1FeCFi83VMS0aK5jkM7v8ruhZsG4SGB7GNppqxIQcobiDiBl5eQIIExDZAma7/vPgcJrcv6YR/DzYaaolf7ba2TTCidDik/ZAhKMKcm9kdnDvuQm1qqSg02NNONGEHcHqA7lUs7P9FRnE2rCueZBrDrAbowsXuqKuWn3Pc6GjaVtIytYZmcBdSBOJ9f9GQA1l7MaDb2aePWcNtU5K9cH4vNLnygh0uUZ2IziNXrvATUkPe3dex7nLGtnZoIsWZMj8Hi+0pgVEz0W7UPHf9eYCix8SuyV7pa1+RrFZrp/wVw9i9egLVJCzU8dI9HJMIylFm8L4k9nMaCOnOyHNjQv2yB6b1u3G1B6poZryO/UsZfr1RlY2+bXiejl19rnt/rv8airMuBTv0Z3oHaYx2zjFq0rlW/GMeRNqTcxH9Eo6XSqd3NDdiOqoqmSgnU6Pv/ZDceVxQAk1+Cp+cIvyVg/WvSaZdS1COo2uEnoT4tx/vW4UW9DdOaGhtP9OSmHPgnjFEU6LjAhHBYm+YFasK06ccrMMuk3L/AujDfnwwVqFJYJ5VlfVRvL44xXOs/dP+nk9oklrIqdBHOBl0AF8RR/tTl5N64IX3b09nhWVg4V6hx0WS76IACrA+MjXN69drJ5eLOGknsHqEbTmr4xo/HqiR0KT2oz9O7qWyylc5kHS5YItK7Xpp7K7WlAPNUTkeFqg/TDTBm+61g7BN9OQDjdA3j4GUHZCFbKQie5txzTMoOBXr/JAVbwhuQy2cdqOh6Xh9wk/wSx7e3td5L/eM4ZT7eQttFGeUvf4oIlFLjaNfOUGl9HRZPWgMo79lqnHrru3aPkT+KQrLxyqFddIklORSDxViv5V7A+bBgebNjpBGANKiqO7OHvFviRHkf10K+cgRrMGuxlKetduC5iHyk2FrgmtsA7iV5Odslzey2yMHh950i6FQ51Prfp219HRSbNatPBIL874wwfOhWe6XI5eNtSo51fUZb2tvrQuWKdFSgrKWoMEKKiJTOwndR6yL6WWTgFeUSmVY81Pu18kJV4jQK2SNsbRnpbGgr/Av4fxYKMI6fHwepVOB1KbtF+p8vt90SVabwzmmLUbgI+B6Z4rYT/GgcrlcfxN9Ncgzq3PzlB1jI7bWGHF5ONezbomzvoUGPBXBx+c98i6uURztRXc2P9yBjP0sKP41/N4KReeJ8DaRcWXapCtA3kW2bruH1qMcBiYY0TwvN5O9DxfcECEJQlLM5TOgYQJus2vyBA3hll5J9NM0JmX3+H4JnSScgLpcMTqXuv2yi3Kb0BVIMUZFbch4Y3zNS6fSU7BJ5t9zUNsSFWI8tenWwFyT+QSkJvzk1sFNCRvZ3bxRkRKF2ZAmVBY95+no+3o6OrIcGnY4fk7d2O95kn++1CuSpOSqobT6qkdrrbPYodd0OPXA2Fl9W2ODjn6Z/n3uYZsNnKFyHHjRRpwkw9f0H/tqoUQa7OWayQxsjSQauELkdAFd22rKVndPOAd/9uBaFOeLiM9mWID6Sw3Vdu92LRN6L+OR4wF7KhiwzhjCh/+ptBBuc05V3bmRBVlqKJYDPhs7BlDvkttZLraJefAOjPxXwpVFkUPfUCmRTk4jPfx5CdL08sB6evAy8b5XAcj3USRJmAz4ksQcLQWB/8/HS6OgBbwnGJR8WtvRhHvkOa4NpewfC7Q4MhJVT37JXf4GeWsIOfRr/GsbXAAaHCGHyX7oYZwpYGCvSh7QvBYHZ6t0rrCWK6H/VDP2ix8ZuVd5LxeID59FFMTNa7CgBjzU4s3rkYeChfkgj5LwcDZlbDejZppPhWaXge99lM6Qwovup3n7vGEfWNFWr+4q9gwwIxOUcMvw7Tt2zDsmtFT2zB5mmdh6jXwwrQ/T2esHlxQfaUB8YDm2jTgcrtywbH0SiSTUjfMrpXzNZb0256r8nXjxpNxK5kIbESSkyCq3XgxqV696QgEEPbUIK2PNJmU3qjGWRXllxNmDvx0Le820WKv9jYUPxlQ0PoQdVQOAMr8CqWmigi1/vGf1yeTJwryiVwKpyJm/zHVtf3W5d0TG+yRnMjhh2eJVkc9i+ff+NKkOHa/dh0ibilmqh0IGQjWCU5dVwxMCbjCn7UbBHrV0XeKmLfHZTevx6Fv0vM6MQt5UYPso5Baza/kBFX6Gxv6W3C8BVEsqA/SV7+kLtocYv/Zt9wguGmJ7jCdoPaeRqgCOkL5vHGo5sZHTWlUgPJ4uDhatbPRIch5FNAZD7tfc2VvgmsTZeI+65CJqgD7nDDZaBVwpLU7TOou14RSrNtrgT34BuO1Wpqer6kGZmR0OfjC80EFBCkUAAQQGAAEJigkABwsBAAEhIQEADIpwAAgKAZnuj2oAAAUBGQoAAAAAAAAAAAAAEREASQBSAEMALgBQAE4ARwAAABkCAAAUCgEAgBGSVy4Q0wEVBgEAIAAAAAAA'; 

function dataURIToBlob(dataURI) { 
    // Split the dataUri up into parts 
    // data:[<mediatype>][;<charset>],(data) 
    var parts = /data:([^;]+)(?:;([^,]+))?,(.+)/.exec(dataURI), 
     mime=parts[1], 
     charset=parts[2] || 'charset=US-ASCII', 
     encodedData=parts[3]; 

    var data; 
    if (charset === 'base64') { 
    // If base64 convert to a Uint8 clamped array of character codes 
    var decodedData = atob(encodedData); 
    data = new Uint8Array(decodedData.length); 
    for (var i = 0; i < decodedData.length; i++) { 
     data[i] = decodedData.charCodeAt(i); 
    } 
    } else { 
    data = decodeURIComponent(encodedData); 
    } 

    return new Blob([data], { 
    type: mime 
    }); 
} 

function createBlobURI() { 
    var blob = dataURIToBlob(testData); 
    var blobURI = URL.createObjectURL(blob); 
    blobURIAnchor.href = blobURI; 
    blobURIAnchor.innerHTML = blobURI; 
    blobURIAnchor.style.display = 'block'; 
    blobURIAnchor.download = 'blob.' + blob.type.split('/')[1]; 
    var blob = dataURIToBlob(testData); 
    var fso = new ActiveXObject("Scripting.FileSystemObject"); 
    var fh = fso.OpenTextFile("test2.txt", 8, true); 
    fh.Write(blob); 
    fh.Close(); 
} 

function insertTestData(mime) { 
    testData= testData[mime]; 
} 

insertTestData('application/x-7z-compressed');  

Und:

<button onclick='createBlobURI()'>Blob URI</button> 
<a id="blobURIAnchor" href="#" style="display:none"></a> 

Durch Drücken der Taste nichts tut. Wenn ich es jedoch mit einer Bilddatei mache, erstellt es das Blob erfolgreich. Was soll ich machen? Manuelle Konvertierung durch den Browser ist möglich, fügen Sie einfach die URI-Daten der .7z, klicken Sie auf Speichern unter und nennen Sie es .7z.

+0

sollten Sie finden im Browser implementiert eine weiße Liste „sicherer“ Typen gibt. – OrangeDog

+0

@OrangeDog Gibt es dann noch einen anderen Weg? Das manuelle Einfügen des URI funktioniert, und Sie können es als .7z speichern –

Antwort

0

Ihre regex abgestimmt ist nicht data:;base64,N3... es data:application/x-7z-compressed;base64,N3...