Ich muss versuchen, die DISK Größe einer Textzeichenfolge (die Rohtext oder eine Base64-codierte Zeichenfolge für ein Bild / Audio / etc sein könnte) in JavaScript zu schätzen. Ich bin mir nicht sicher, wie ich das einschätzen soll. Die einzige Sache, wenn ich googlen kann, ist .length
, also dachte ich, dass vielleicht jemand auf StackOverflow es wissen könnte ...
Der Grund, warum ich wissen muss, ist, dass ich ein localStorage-Skript habe, das prüfen muss, ob sich ein Benutzer seinem 5MB (oder 10MB in IE) Kontingent nähert und sie auffordert, die maximale Größe zu erhöhen für die Domäne. Also, wenn ein Benutzer, sagen wir, 4.5MBs Daten trifft, würde es mit
antwortenSie nähern sich Ihrem Browser 5 MB Datenobergrenze. Bitte erhöhen Sie Ihre maximalen Daten um ... [Anweisungen zum Erhöhen für den Browser]
Es hängt von Ihrer Zeichencodierung ab. Wenn Sie ASCII-Codierung verwenden, wird es str.length Bytes sein. Wenn Sie UTF-16 verwenden, wird es (Str.Länge * 2) Bytes sein. Wenn Sie UTF-8 verwenden, hängt dies von den Zeichen in der Zeichenfolge ab. (Einige Zeichen benötigen nur 1 Byte, andere können bis zu 4 Byte aufnehmen.) Wenn Sie mit Base64-codierten Daten arbeiten, befinden sich die Zeichen alle im ASCII-Bereich und belegen daher str.length-Bytes auf der Festplatte. Wenn Sie sie zuerst dekodieren und als Binärdatei speichern, würde das (Str.Länge * 3/4) Byte dauern. (Bei Base64 werden 3 uncodierte Bytes zu 4 codierten Bytes.)
BTW - Wenn Sie Joel Spolskys absolutes Minimum nicht alle Software-Entwickler gelesen haben, Positives über Unicode und Zeichensätze wissen müssen (keine Ausreden!) , sollten Sie dies sofort tun.
UPDATE: Wenn Sie localStorage verwenden, nehme ich an, dass Sie mit window.localStorage.length vertraut sind, obwohl dies nur sagt, wie viel verwendet wurde, nicht, ob Ihre neuen Daten passen. Ich würde auch sehr empfehlen, Tauchen Sie in HTML5 , vor allem den Abschnitt über die Lagerung:
Wenn sich etwas seit der Erstellung nicht geändert hat, bin ich nicht sicher, was Sie tun können, da localStorage Sie auf 5 MB pro Domain beschränkt, ohne dass der Benutzer sie erhöhen kann.
Es hängt von den Daten in Ihrer Zeichenfolge und von der Art ab, wie sie gespeichert werden. Wenn Ihre Base64-codierte Zeichenfolge als Base64-codierte Zeichenfolge gespeichert wird, entspricht die Länge der Größe auf der Festplatte. Wenn nicht, müssen Sie es dekodieren
Ich habe eine Lösung gefunden (obwohl es ein bisschen eklig aussieht) hier
%Vor%Tags und Links javascript string base64 string-length diskspace