javascript - texto - Guarde el archivo usando Binary String en Android a través de HTML5
manejo de string en android studio (1)
Puede guardar datos binarios con FileWriter, no era posible en el pasado, pero ahora es
crea tu blob de esta manera:
var byteArray = new Uint8Array(fileContent.length);
for (var x = 0; x < byteArray.length; x++){
byteArray[x] = fileContent.charCodeAt(x) & 0xff
}
var blob = new Blob([byteArray], {type: ''application/octet-stream''});
y luego guárdalo
fileWriter.write(blob);
También estoy trabajando con un pequeño equipo de 3 personas con mi aplicación y estamos estancados.
Estamos usando JSZip y FileSaver para guardar archivos para nuestra aplicación de edición de código. Funciona bien en el navegador, pero cuando lo uso con PhoneGap como una aplicación nativa de Android, no escribe.
Este problema aún ocurre con la biblioteca zip.js e incluso guarda archivos individuales con la biblioteca FileSaver.js .
$(''.savemd'').click ->
blob = new Blob([ mdEditor.getValue() ], type: ''text/x-markdown'')
saveAs blob, ''source.md''
Intenté usar el objeto FileWriter de PhoneGap, pero luego descubrí que actualmente es imposible escribir datos binarios con FileWriter de Phonegap - fuente - fuente
Sin embargo, esa publicación tiene algunos años.
También intenté hacer que esto funcionara con WebView nativo y el uso del proyecto Crosswalk y todavía no tuve suerte.
También hemos intentado ...
function saveFile(fileName, fileData) {
// Get access to the file system
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function (fileSystem) {
// Create the file.
fileSystem.root.getFile(fileName, { create: true, exclusive: false }, function (entry) {
// After you save the file, you can access it with this URL
myFileUrl = entry.toURL()
entry.createWriter(function(writer) {
writer.onwriteend = function(evt) {
alert("Successfully saved file to " + myFileUrl)
}
// Write to the file
writer.write(fileData)
}, function(error) {
alert("Error: Could not create file writer, " + error.code)
})
}, function(error) {
alert("Error: Could not create file, " + error.code)
})
}, function(evt) {
alert("Error: Could not access file system, " + evt.target.error.code)
})
}
El problema con esto es que solo guarda en la memoria del usuario (tarjeta sd incluida o no, hemos probado en todos nuestros dispositivos Android y todavía no funciona, pero tenga en cuenta que no estamos utilizando ningún dispositivo rooteado), y no lo hará Trabaja con JSZip.
Nuestro equipo se desarrolla en muchos sistemas operativos diferentes (Mac, Android, Chromebook) por lo que PhoneGap Build es actualmente un requisito.
¿ALGUIEN conoce alguna forma de hacer esto?
¿Esto se refiere a Guardar un archivo usando una Cadena Binaria en Android a través de HTML5? (La respuesta PhoneGap o PhoneGap Builds es muy preferida)
Aquí está nuestro XML actual para PhoneGap Build:
<?xml version="1.0" encoding="utf-8"?>
<widget xmlns = "http://www.w3.org/ns/widgets"
xmlns:gap = "http://phonegap.com/ns/1.0"
id = "com.save.test"
version = "1.0.0"
versionCode = "1">
<name>SaveTest</name>
<description>
Save file using a Binary string test on Android
</description>
<author email="[email protected]" href="http://mikethedj4.github.io/">
Michael Schwartz
</author>
<content src="index.html" />
<icon src="icon.png" gap:role="default" />
<icon gap:platform="android" gap:qualifier="ldpi" src="res/icon/android/icon-36-ldpi.png" />
<icon gap:platform="android" gap:qualifier="mdpi" src="res/icon/android/icon-48-mdpi.png" />
<icon gap:platform="android" gap:qualifier="hdpi" src="res/icon/android/icon-72-hdpi.png" />
<icon gap:platform="android" gap:qualifier="xhdpi" src="res/icon/android/icon-96-xhdpi.png" />
<icon gap:platform="android" src="res/icon/android/icon-96-xhdpi.png" />
<icon gap:platform="ios" height="57" src="res/icon/ios/icon-57.png" width="57" />
<icon gap:platform="ios" height="72" src="res/icon/ios/icon-72.png" width="72" />
<icon gap:platform="ios" height="114" src="res/icon/ios/icon-57-2x.png" width="114" />
<icon gap:platform="ios" height="144" src="res/icon/ios/icon-72-2x.png" width="144" />
<icon gap:platform="winphone" src="res/icon/windows-phone/icon-48.png" />
<icon gap:platform="winphone" gap:role="background" src="res/icon/windows-phone/icon-173-tile.png" />
<preference name="permissions" value="none"/>
<!-- <plugin name="org.crosswalk.engine" spec="1.3.0" source="pgb" /> -->
<!-- <plugin name="cordova-plugin-crosswalk-webview" source="npm" /> -->
<plugin name="cordova-plugin-whitelist" source="npm" />
<plugin name="cordova-plugin-device" source="npm" />
<plugin name="cordova-plugin-file" source="npm" />
<plugin name="cordova-plugin-file-transfer" source="npm" />
<plugin name="cordova-plugin-chrome-apps-filesystem" source="npm" />
<!-- <plugin name="cordova-connectivity-monitor" source="npm" /> -->
<preference name="phonegap-version" value="cli-5.2.0" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
</widget>
Cualquier ayuda es muy apreciada.
$(''.download'').click(function () {
eval($(''#jszipdemo'').val())
})
.fill {
width: 100%;
display: block;
}
<link rel=''stylesheet prefetch'' href=''http://treehouse-code-samples.s3.amazonaws.com/poly/css/application.css''>
<div class=''grid''>
<div class=''grid__col--12''>
<p></p>
<button class=''btn--default download fill''>Run</button>
<textarea class=''form__input'' id=''jszipdemo'' placeholder=''Demo code here...'' rows=''7''>var zip = new JSZip();
zip.file("Hello.txt", "Hello World");
var folder = zip.folder("images");
folder.file("folder.txt", "I''m a file in a new folder");
var content = zip.generate({type:"blob"});
// see FileSaver.js
saveAs(content, "example.zip");</textarea>
</div>
</div>
<script src=''https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js''></script>
<script src=''https://stuk.github.io/jszip/dist/jszip.js''></script>
<script src=''https://stuk.github.io/jszip-utils/dist/jszip-utils.js''></script>
<script src=''https://stuk.github.io/jszip/vendor/FileSaver.js''></script>