working on the upload from
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -3,3 +3,4 @@ Logs/
|
|||||||
progs.db
|
progs.db
|
||||||
tmpdir/
|
tmpdir/
|
||||||
.vscode/
|
.vscode/
|
||||||
|
data/
|
14
html/uploadfile.html
Normal file
14
html/uploadfile.html
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
{{define "body"}}
|
||||||
|
|
||||||
|
<div class="container">
|
||||||
|
<h1>Upload a File</h1>
|
||||||
|
<form action="/upload" method="post" enctype="multipart/form-data">
|
||||||
|
<div class="upload-btn-wrapper">
|
||||||
|
<button class="btn">Upload a file</button>
|
||||||
|
<input type="file" name="myFile" />
|
||||||
|
</div>
|
||||||
|
<input type="submit" value="Upload" />
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{{end}}
|
87
main.go
87
main.go
@@ -6,13 +6,14 @@ import (
|
|||||||
"database/sql"
|
"database/sql"
|
||||||
"fmt"
|
"fmt"
|
||||||
"html/template"
|
"html/template"
|
||||||
|
"io"
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
_ "modernc.org/sqlite" // Importing SQLite driver for database interaction.
|
_ "modernc.org/sqlite" // Importing SQLite driver for database interaction.
|
||||||
)
|
)
|
||||||
|
|
||||||
// readHtml function reads an HTML file and applies a CSS template to it before sending it to the client.
|
// readHtml function reads an HTML file and applies a CSS template to it before sending it to the client.
|
||||||
@@ -213,6 +214,54 @@ func fullSearchPackagesDB(sqldb *sql.DB) []packages {
|
|||||||
}
|
}
|
||||||
return pkgs
|
return pkgs
|
||||||
}
|
}
|
||||||
|
func uploadFileForServer(sqldb *sql.DB, lang string) http.Handler{
|
||||||
|
return http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) {
|
||||||
|
pageDataFromDatabase := elements{
|
||||||
|
Title: getMsgFromDB(sqldb, "title", lang),
|
||||||
|
Header: getMsgFromDB(sqldb, "header", lang),
|
||||||
|
Help: getMsgFromDB(sqldb, "help", lang),
|
||||||
|
Packagename: getMsgFromDB(sqldb, "packagename", lang),
|
||||||
|
Packageversion: getMsgFromDB(sqldb, "packageversion", lang),
|
||||||
|
Allow: getMsgFromDB(sqldb, "allow", lang),
|
||||||
|
Warning: getMsgFromDB(sqldb, "warning", lang),
|
||||||
|
Explain: getMsgFromDB(sqldb, "explain", lang),
|
||||||
|
}
|
||||||
|
data := struct {
|
||||||
|
BodyClass string
|
||||||
|
ElementsData elements
|
||||||
|
Lang string
|
||||||
|
}{
|
||||||
|
ElementsData: pageDataFromDatabase,
|
||||||
|
BodyClass: "",
|
||||||
|
Lang: lang,
|
||||||
|
|
||||||
|
}
|
||||||
|
templates, err := template.ParseFiles("html/master.html", "html/uploadfile.html")
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
}
|
||||||
|
err = templates.ExecuteTemplate(res, "master", data)
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
}
|
||||||
|
// upload(res, req)
|
||||||
|
res.WriteHeader(http.StatusOK)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
func upload() http.Handler {
|
||||||
|
return http.HandlerFunc(func(res http.ResponseWriter, req *http.Request){
|
||||||
|
file, header, _ := req.FormFile("myFile")
|
||||||
|
req.ParseMultipartForm(10000000<<20)
|
||||||
|
defer file.Close()
|
||||||
|
filename := header.Filename
|
||||||
|
tempFile, _ :=os.CreateTemp("Data",header.Filename)
|
||||||
|
defer tempFile.Close()
|
||||||
|
fileBytes,_:=io.ReadAll(file)
|
||||||
|
tempFile.Write(fileBytes)
|
||||||
|
fn,_:=os.OpenFile("Data/"+filename, os.O_CREATE, 0666)
|
||||||
|
fn.Write(fileBytes)
|
||||||
|
fn.Close()
|
||||||
|
})}
|
||||||
|
|
||||||
// index creates an HTTP handler that serves the main page with data from the database.
|
// index creates an HTTP handler that serves the main page with data from the database.
|
||||||
// sqldb: The database connection object.
|
// sqldb: The database connection object.
|
||||||
@@ -235,23 +284,25 @@ func index(sqldb *sql.DB, lang string) http.Handler {
|
|||||||
ElementsData elements
|
ElementsData elements
|
||||||
PackagesData []packages
|
PackagesData []packages
|
||||||
Lang string
|
Lang string
|
||||||
}{
|
}{
|
||||||
ElementsData: pageDataFromDatabase,
|
ElementsData: pageDataFromDatabase,
|
||||||
BodyClass: "",
|
BodyClass: "",
|
||||||
PackagesData: queryPacks(sqldb, &pageDataFromDatabase),
|
PackagesData: queryPacks(sqldb, &pageDataFromDatabase),
|
||||||
Lang: lang,
|
Lang: lang,
|
||||||
}
|
}
|
||||||
templates, err := template.ParseFiles("html/master.html", "html/main.html")
|
templates, err := template.ParseFiles("html/master.html", "html/main.html")
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
}
|
}
|
||||||
err = templates.ExecuteTemplate(res, "master", data)
|
err = templates.ExecuteTemplate(res, "master", data)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
}
|
}
|
||||||
res.WriteHeader(http.StatusOK)
|
|
||||||
})
|
res.WriteHeader(http.StatusOK)
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -276,6 +327,8 @@ func main() {
|
|||||||
mux.Handle("/", index(db, "heb"))
|
mux.Handle("/", index(db, "heb"))
|
||||||
mux.Handle("/en", index(db, "eng"))
|
mux.Handle("/en", index(db, "eng"))
|
||||||
mux.Handle("/stats", stats(db,"eng"))
|
mux.Handle("/stats", stats(db,"eng"))
|
||||||
|
mux.Handle("/up", uploadFileForServer(db,"eng"))
|
||||||
|
mux.Handle("/upload",upload())
|
||||||
addr := fmt.Sprintf(":%s", "12312")
|
addr := fmt.Sprintf(":%s", "12312")
|
||||||
server := http.Server{
|
server := http.Server{
|
||||||
Addr: addr,
|
Addr: addr,
|
||||||
|
Reference in New Issue
Block a user