Generera textfil baserat på formulärinput

Permalänk
Medlem

Generera textfil baserat på formulärinput

Jag är en hobbysnickrare inom webb och undrar om någon har lust att vägleda mig i rätt riktning.

För privat bruk vill jag ha en webbsida där man enbart skriver in ett 6-siffrigt tal i ett formulär.

Vid "Submit" vill jag att en fil skapas med filändelsen .cm och att denna fil direkt sparas ner till en specifik plats på hårddisken.

Själv outputfilen ska se ut så här:

{
"KundID": {
"name": "123456",
"Room": 73
},
"ColorMarker": {
"Id": "cf46d1b6-812e-49e5-b4c9-b4584475265a",
"Color": "#FFFF2207",
"Description": "HS",
"IsOK": false
}
}

Det som ska göras är alltså att använda ovan som mall men att beroende på vad jag matar in för 6-siffrigt tal så ändras innehållet i "name": "******",

Är det någon form av javascript som är vägen att gå?

Tacksam som tusan för svar!

Permalänk
Medlem

Om jag surfar in på din webbsida, fyller i ett tal och trycker på ”Submit” – tänker du att filen ska sparas på min dators hårddisk, eller på din servers hårddisk?

Om klientens hårddisk:
I webbläsare kan man bara köra JavaScript, så det är vägen att gå. Det går av säkerhetsskäl inte komma åt hårddisken, men du kan trigga en ”Spara fil”-dialog. Dock måste användaren själv bestämma var de vill spara filen någonstans.

Om serverns hårddisk:
På servern kan du köra vilket programmeringsspråk du vill! Om du gillar JavaScript kan du använda Node.js.

Permalänk
Medlem
Skrivet av lydell:

Om jag surfar in på din webbsida, fyller i ett tal och trycker på ”Submit” – tänker du att filen ska sparas på min dators hårddisk, eller på din servers hårddisk?

Om klientens hårddisk:
I webbläsare kan man bara köra JavaScript, så det är vägen att gå. Det går av säkerhetsskäl inte komma åt hårddisken, men du kan trigga en ”Spara fil”-dialog. Dock måste användaren själv bestämma var de vill spara filen någonstans.

Om serverns hårddisk:
På servern kan du köra vilket programmeringsspråk du vill! Om du gillar JavaScript kan du använda Node.js.

Det är tänkt att sparas på min lokala hårddisk. Dialogruta får fungera.

Jag ska kolla in nodejs. Tack så mycket!

Permalänk
Medlem
Skrivet av lydell:

Om jag surfar in på din webbsida, fyller i ett tal och trycker på ”Submit” – tänker du att filen ska sparas på min dators hårddisk, eller på din servers hårddisk?

Om klientens hårddisk:
I webbläsare kan man bara köra JavaScript, så det är vägen att gå. Det går av säkerhetsskäl inte komma åt hårddisken, men du kan trigga en ”Spara fil”-dialog. Dock måste användaren själv bestämma var de vill spara filen någonstans.

Om serverns hårddisk:
På servern kan du köra vilket programmeringsspråk du vill! Om du gillar JavaScript kan du använda Node.js.

Gick lite snabbt i mitt förra svar. Nodejs var ju för server och jag ville ju att det skulle sparas lokalt

Har du tips på var jag kan hitta ett sådant javascript att modifiera? Jag är på för låg nivå för att fixa skriva ett eget från grunden.

Permalänk
Medlem

Den här lösningen ser rätt vettig ut: https://stackoverflow.com/a/18197341/2010616

Permalänk
Medlem
Skrivet av zencity:

Gick lite snabbt i mitt förra svar. Nodejs var ju för server och jag ville ju att det skulle sparas lokalt

Har du tips på var jag kan hitta ett sådant javascript att modifiera? Jag är på för låg nivå för att fixa skriva ett eget från grunden.

Skapade ett litet exempel som gör det jag antar du vill utifrån länken som @lydell postade.

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <script> function createFile() { var namn = document.getElementById('name').value var mall = { "KundID": { "name": namn, "Room": 73 }, "ColorMarker": { "Id": "cf46d1b6-812e-49e5-b4c9-b4584475265a", "Color": "#FFFF2207", "Description": "HS", "IsOK": false } } var element = document.createElement('a'); element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(JSON.stringify(mall))); element.setAttribute('download', 'FILNAMNET.cm'); element.style.display = 'none'; document.body.appendChild(element); element.click(); document.body.removeChild(element); } </script> </head> <body> <form> <input name="text" placeholder="Namn" id="name"></input> <input type="button" value="Skapa fil" onclick="createFile()" maxlength="6"> </form> </body> </html>

Visa signatur

NZXT H510 Flow MSI B450 Tomahawk MAX
AMD Ryzen 5800X3D RX 7900XTX Kingston Fury 64GB

Permalänk
Medlem
Skrivet av Pamudas:

Skapade ett litet exempel som gör det jag antar du vill utifrån länken som @lydell postade.

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <script> function createFile() { var namn = document.getElementById('name').value var mall = { "KundID": { "name": namn, "Room": 73 }, "ColorMarker": { "Id": "cf46d1b6-812e-49e5-b4c9-b4584475265a", "Color": "#FFFF2207", "Description": "HS", "IsOK": false } } var element = document.createElement('a'); element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(JSON.stringify(mall))); element.setAttribute('download', 'FILNAMNET.cm'); element.style.display = 'none'; document.body.appendChild(element); element.click(); document.body.removeChild(element); } </script> </head> <body> <form> <input name="text" placeholder="Namn" id="name"></input> <input type="button" value="Skapa fil" onclick="createFile()" maxlength="6"> </form> </body> </html>

Oj jäklar vilket jobb du har gjort. Ser fram emot att testa detta. Tack så mycket!