简体   繁体   中英

JavaScript save JSON response to other file extension with nice format

I've written some code to generate CSR as well as the private key.

The response to <textarea> is formatted nicely with a newline (if you know what the proper CSR/Private key looks like).

I have a problem with saving the private key to .pfx file type, where it will not be formatted nicely.

Here's how it looks like in the browser when placed into a <textarea> :

-----BEGIN PRIVATE KEY-----
MIIEowIBAAKCAQEAsUM5i1BX1NWS1CGsou86LN3oRcfkA63FdqneDLi36602dxQO
pSPabp8lqR+LgIWq/nIxShbZgc5YwlmhylrqYm1jdHXUQlNhBjsJE6Y0SwybXD9k
ERyWgFfaFLeUjUTXax01/M9oh4JQ+o4pWz+cw3oUjklH5iviLx34bZMq0k5azLus
312FRgA1x2AKG4QWUwTijTISYZ4mtLDTli2iqWVvPpLi87hLKTAMmLdJZ8hJkXOJ
QYRALpiERwX4lhckh1xnr/NfzE+QY0zxGwmvE4Uk0MqT7liUfqPnXiMLIIGuC/pt
xf2SXQBv/A9eus2jI0gM627iyvbDdkw0E1B+5QIDAQABAoIBAQCjpZM/aSnc5FsM
GhZ9yWsktqzTlymKt+dfmIzVo8av/hYVMuAeVw42KBilnOi1+zEUfKnCY3vkGXLZ
4dO6s9pEigZSIuGVZdJh5SiJClymmHnpXOBt572NuQ0tKRosnUxep/YKchRnXciS
t6G4iu6XjGHjxgVpmkPTCdEqn73drkf4jeQQrXWJQeOFH3b0e7XwvkoBKrjn6Tu3
uUURrNmeZRQnCGaj51wn8KYejCS7ReL071MdhwgJesCJzTpZFJ+HpLJSZI8FJQpd
pzX8rZ+4UfXMd1bcSaLMpgRZJrzGLx5uugO2sgTFelF6rzcg+yD+/JOETzSE3Am1
L5TA7MA1AoGBAPsxFTGAwg3Vvwg2xrSBAaUu2Vu8R3mvCRp2fjX1Q9CUM5vJpkqH
8h1xX3miVsGF//+W0yoSzVxcoPEALre5kiEQrmKYtXCaL6b4JY3BHJrUl4yIh0iO
1luFitq/T4R2flmshESd4SolqvdrpTVg3vryj9v9X75sIFlssdV3slZDAoGBALSn
3coa/8Dha5v+qBnWkHZcVGe/q9OOGJWloAbgI/S9TjcKqwe5u+EtvS2S3MurDbE6
uUBC85wCqjDelc36mn84f0YXDDy6vtZp0HoErGL7/wXL5zn52iRmVvF31vU1ahcK
2TT62MYQ8aCr7nNczvG8iF43hbfCd5c5yWDekwe3AoGAQ6REAMCbgP4+IwgdGh5j
QwgKoBljZfEskmO2OPGDAXfnLdxvW0KggC03eJmuow5ikYEb/Ah0JJsM+9kAu5jN
MPo8+3AD6/6ZNm08L6ABA/CbnsxlIbTVJHAhpCZAU3tVKvC57YBWUfMyxs3F/0nG
wezvsF3amnyjeXE7sjA5ZeECgYBzsendTCssaHEVByK64WnFE15OzzaIlsDx3Y89
t//u9emIYIGlwfIrxLIZ5KsYmCR9syD+oaIH8MDz6SjBMFQPU6xWw93naqVbBYsp
CaMpBT+Og8ZCn9tvYkcd/2SfxyR5O05dmqSHPESyZEmigfZaZCZlSGOPirAyHiT0
r7YzwwKBgAQSh1wgnlOaadkKHzItrXf9i9dUaAzuUYj/B/EpZR+y5ckXFuohpczE
rQ4yJIgvynxKJW7r2AVS0ad/fbgh5YNCaykB8HDhP1ZQY8ng1ae6VoHRQiLZAdKx
cAqWIvwWEjAFFbHixt4d3OChDlubpeB3p24MlWycc1H63L4RKAto
-----END PRIVATE KEY-----

How it looks like in the file:

"-----BEGIN PRIVATE KEY-----\nMIIEowIBAAKCAQEAsUM5i1BX1NWS1CGsou86LN3oRcfkA63FdqneDLi36602dxQO\npSPabp8lqR+LgIWq/nIxShbZgc5YwlmhylrqYm1jdHXUQlNhBjsJE6Y0SwybXD9k\nERyWgFfaFLeUjUTXax01/M9oh4JQ+o4pWz+cw3oUjklH5iviLx34bZMq0k5azLus\n312FRgA1x2AKG4QWUwTijTISYZ4mtLDTli2iqWVvPpLi87hLKTAMmLdJZ8hJkXOJ\nQYRALpiERwX4lhckh1xnr/NfzE+QY0zxGwmvE4Uk0MqT7liUfqPnXiMLIIGuC/pt\nxf2SXQBv/A9eus2jI0gM627iyvbDdkw0E1B+5QIDAQABAoIBAQCjpZM/aSnc5FsM\nGhZ9yWsktqzTlymKt+dfmIzVo8av/hYVMuAeVw42KBilnOi1+zEUfKnCY3vkGXLZ\n4dO6s9pEigZSIuGVZdJh5SiJClymmHnpXOBt572NuQ0tKRosnUxep/YKchRnXciS\nt6G4iu6XjGHjxgVpmkPTCdEqn73drkf4jeQQrXWJQeOFH3b0e7XwvkoBKrjn6Tu3\nuUURrNmeZRQnCGaj51wn8KYejCS7ReL071MdhwgJesCJzTpZFJ+HpLJSZI8FJQpd\npzX8rZ+4UfXMd1bcSaLMpgRZJrzGLx5uugO2sgTFelF6rzcg+yD+/JOETzSE3Am1\nL5TA7MA1AoGBAPsxFTGAwg3Vvwg2xrSBAaUu2Vu8R3mvCRp2fjX1Q9CUM5vJpkqH\n8h1xX3miVsGF//+W0yoSzVxcoPEALre5kiEQrmKYtXCaL6b4JY3BHJrUl4yIh0iO\n1luFitq/T4R2flmshESd4SolqvdrpTVg3vryj9v9X75sIFlssdV3slZDAoGBALSn\n3coa/8Dha5v+qBnWkHZcVGe/q9OOGJWloAbgI/S9TjcKqwe5u+EtvS2S3MurDbE6\nuUBC85wCqjDelc36mn84f0YXDDy6vtZp0HoErGL7/wXL5zn52iRmVvF31vU1ahcK\n2TT62MYQ8aCr7nNczvG8iF43hbfCd5c5yWDekwe3AoGAQ6REAMCbgP4+IwgdGh5j\nQwgKoBljZfEskmO2OPGDAXfnLdxvW0KggC03eJmuow5ikYEb/Ah0JJsM+9kAu5jN\nMPo8+3AD6/6ZNm08L6ABA/CbnsxlIbTVJHAhpCZAU3tVKvC57YBWUfMyxs3F/0nG\nwezvsF3amnyjeXE7sjA5ZeECgYBzsendTCssaHEVByK64WnFE15OzzaIlsDx3Y89\nt//u9emIYIGlwfIrxLIZ5KsYmCR9syD+oaIH8MDz6SjBMFQPU6xWw93naqVbBYsp\nCaMpBT+Og8ZCn9tvYkcd/2SfxyR5O05dmqSHPESyZEmigfZaZCZlSGOPirAyHiT0\nr7YzwwKBgAQSh1wgnlOaadkKHzItrXf9i9dUaAzuUYj/B/EpZR+y5ckXFuohpczE\nrQ4yJIgvynxKJW7r2AVS0ad/fbgh5YNCaykB8HDhP1ZQY8ng1ae6VoHRQiLZAdKx\ncAqWIvwWEjAFFbHixt4d3OChDlubpeB3p24MlWycc1H63L4RKAto\n-----END PRIVATE KEY-----"

My CSR code:

var csrResult = (JSON.parse(csr))
var csrResultResdata = JSON.parse(csrResult["resdata"]["csrgen"]["context"])
var csrResultResdataCSR = csrResultResdata["csr"]
var csrSpliter = csrResultResdataCSR.split("\n\n")
var csrOnly = csrSpliter[0]
var privateKeyOnly = csrSpliter[1]
var exportName = "private_key"
downloadObjectAsJson(privateKeyOnly, exportName)

My save as file code:

function downloadObjectAsJson(exportObj, exportName){
    var dataStr = "data:text/json;charset=utf-8," + encodeURIComponent(JSON.stringify(exportObj));
    var downloadAnchorNode = document.createElement('a');
    downloadAnchorNode.setAttribute("href",     dataStr);
    downloadAnchorNode.setAttribute("download", exportName + ".pfx");
    downloadAnchorNode.click();
    downloadAnchorNode.remove();
}

I need help on format the file content.

The original response from API is:

{
    "result": {
        "code": "0",
        "msg": "Command completed successfully"
    },
    "resdata": {
        "csrgen": {
            "context": "{\"csr\":\"-----BEGIN NEW CERTIFICATE REQUEST-----\\nMIICtjCCAZ4CAQAwcTELMAkGA1UEBhMCTVkxETAPBgNVBAgTCFNlbGFuZ29yMRUw\\nEwYDVQQHEwxQdWNob25nIEpheWExDzANBgNVBAoMBuerpeWNqzEPMA0GA1UECwwG\\n56ul5Y2rMRYwFAYDVQQDEw1hYmMudGt0YW4uY29tMIIBIjANBgkqhkiG9w0BAQEF\\nAAOCAQ8AMIIBCgKCAQEAj3SON7mz0TZwFHAfy/m3vKICH2BjaZdWJWi7ZPLo2uYC\\n6070cU7hd5iM8+q7VEYSUJb8XisuGpKSakx0xWXuXkJfrciR9P5dypEWAUle3e+z\\nHaQMhu9eJu7W0do96f8WLJoy/T1jYIF6p2hhwRy368FrUtWGJQ+6SH5MTTRytOl5\\nayPdvJiW2AmTwv26OG47eDXZqQOFO+MBKd12DYZxBDTpswubhs1rYT5tA5yQA6HP\\ndG+40LxoNqcZVJ/aYvftOVS3JSe4qkA68af8fNqq9NctmPvHWhwp9mv5EBpR/bWw\\nGYcwDawGbAz34LaxBYI3O8Vy+RhsVQKRU/1AFxqaswIDAQABoAAwDQYJKoZIhvcN\\nAQELBQADggEBAHW577j16rtKjCoSE0EBKw+Tttju+nAMqN4YroKS4jmHMPmvGxlc\\nasXXLGC/KDeCjrrNiyXS5aTKPNNkJZ19eZvoyfgAnQ7Ui88iZIwW0DJLRjGne0rm\\nWnRbwelNq2QANx3moGoyxYNmNibDmB/SKpZouqKYz5AczgyPG7eNXT9mFYduuUPW\\n3jYPE/eih9st6IhTBspCQ6diX26BYzClIBrwFT+GdMZhlnWvGrNmE3KVudjq1qDz\\nXdNlKroHJxk79x47UhBLB1TmFWeu7l6KSRku+S4Ubcym+OVZSWaeFcdlW8Uaj8F0\\nq4+QlP37qyeMSq8tvi6fTcs8ZZjPAozlt/k=\\n-----END NEW CERTIFICATE REQUEST-----\\n\\n-----BEGIN PRIVATE KEY-----\\nMIIEowIBAAKCAQEAj3SON7mz0TZwFHAfy/m3vKICH2BjaZdWJWi7ZPLo2uYC6070\\ncU7hd5iM8+q7VEYSUJb8XisuGpKSakx0xWXuXkJfrciR9P5dypEWAUle3e+zHaQM\\nhu9eJu7W0do96f8WLJoy/T1jYIF6p2hhwRy368FrUtWGJQ+6SH5MTTRytOl5ayPd\\nvJiW2AmTwv26OG47eDXZqQOFO+MBKd12DYZxBDTpswubhs1rYT5tA5yQA6HPdG+4\\n0LxoNqcZVJ/aYvftOVS3JSe4qkA68af8fNqq9NctmPvHWhwp9mv5EBpR/bWwGYcw\\nDawGbAz34LaxBYI3O8Vy+RhsVQKRU/1AFxqaswIDAQABAoIBAEEFmoSlllyIqSqK\\nW88vg9lrMT0ZilXM844HN5EdDPBS+xW+9sr47vcvXQwd5AThseF3XjIsrjv7HYQy\\n3Wavuehde1Kgq495T/fF5Ux1/hroT65qsgbjLjDFZvc9TXznUxyqU9w22/ldFsQU\\nauKF6tNgGw4znBbmVxAOtvTzhd57muy+L3iRAVLg3nRz8MOfOxNXibTqDmj845MQ\\nUYN54D8ROclf26BdkxswMNIJ2qDx1D2YR3x/grUaACIrAHa2jBC+AS4PFU4teKGf\\nQ7+USsEu2vU2/FMi75/FA63TiSlRxSB1Qtlaii/SODpoV7k3bfcU6s5hec3ypwpX\\nVwJyBvkCgYEAxhR6vwYhzje8KTzwYaAqrcggWg3O0gpMo1XE8xE/TjrrUe5INzJ+\\ncGo59Uz2s9W10eQBp56SJrpkAJBp40Ck87eG5TnMLMS30jVwCoCzAaadXpk9ihmS\\nTAbjC0l8LQRWmbP1N6NfOkdsRxUv5okZPGfdnIfIYiW2dfEa++YR48cCgYEAuWcT\\nvbFMM+V6YeKzoUiOKauLq0vIoGFLYme1BQRMRk977qsKlfnk//CIuqyId3hi/vTn\\nVNmLnv6wy1Ks0gkkWk2Eexd4pYZHdwXwP47BtxlZQTa6GRKGPaRYY0+BZQZgb8pE\\n4zw9247F5y2lpH4frnVkZU1Ll1zJxqCldnrY+bUCgYAfr98C+AQobRoYrrr1ox2w\\ntzcVsOfJCgTAjFP5XmT2Ks7CSJAc5GL9sMCc0TcWBbYUYZkyK1fOAjtFK9UEma7J\\nni5iNSDIeJ+/bPUDeRspxHGgVHtXwEd7Cg8AGz1WJj+ETxmHUQdG124m4OjMxFnZ\\nI/R7ue0AZnAN5ggfC+sIuQKBgCfn0c3wjXBWIkNTYkqCrWa2r7dM9n/esTUbEVFl\\nHW28yfYTBpJFWU7lXOihHjZoyRYLbIdM08qDE1aQEvaaVSLCsJM1+BfYkSVDN/TW\\nK0fXwuhQeTnQTOiTqRqnEDjIaJVnOfCXFNFfJ6Wco5yGMReB2Pwc6PpJVHzWMwcP\\nZghJAoGBAKOscoFpm2qt25IfWJlIlLEC3IUNCNLAG2dQSndB+S1BnfNEPPnSWxOg\\ncVhmamk/w1L67RtzwJ69S6sTECwfnHDlOBLJwCTtVzGTfHZQ1QBctNnyZ1sHUetd\\nwX5QuEO1vsI/T7jpozg0PGr+5BE5r1kr6VjvPBe+WOhO/4X1wUFt\\n-----END PRIVATE KEY-----\",\"status\":\"Success\"}"
        }
    }
}

Why are you storing your PFX file as JSON formatted? Just remove the JSON.stringify and output it as plain text, seeing as what you're passing in is just a basic string anyway. All that stringify does is wrap it in quote marks and encode the newlines.

var dataStr = "data:text/plain;charset=utf-8," + exportObj;

存储为PFX的私钥图像

Here is a JSbin of it working correctly: http://jsbin.com/lipaxuhidi/edit?html,js,output

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM