working on the upload from

This commit is contained in:
2024-06-16 16:13:19 +03:00
parent 2946698f49
commit 2d05843c28
3 changed files with 87 additions and 19 deletions

89
main.go
View File

@@ -6,13 +6,14 @@ import (
"database/sql"
"fmt"
"html/template"
"io"
"log"
"net/http"
"os"
"strings"
"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.
@@ -213,6 +214,54 @@ func fullSearchPackagesDB(sqldb *sql.DB) []packages {
}
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.
// sqldb: The database connection object.
@@ -235,23 +284,25 @@ func index(sqldb *sql.DB, lang string) http.Handler {
ElementsData elements
PackagesData []packages
Lang string
}{
ElementsData: pageDataFromDatabase,
BodyClass: "",
PackagesData: queryPacks(sqldb, &pageDataFromDatabase),
Lang: lang,
}
templates, err := template.ParseFiles("html/master.html", "html/main.html")
if err != nil {
log.Println(err)
}
err = templates.ExecuteTemplate(res, "master", data)
if err != nil {
log.Println(err)
}
res.WriteHeader(http.StatusOK)
})
}{
ElementsData: pageDataFromDatabase,
BodyClass: "",
PackagesData: queryPacks(sqldb, &pageDataFromDatabase),
Lang: lang,
}
templates, err := template.ParseFiles("html/master.html", "html/main.html")
if err != nil {
log.Println(err)
}
err = templates.ExecuteTemplate(res, "master", data)
if err != nil {
log.Println(err)
}
res.WriteHeader(http.StatusOK)
})
}
@@ -276,6 +327,8 @@ func main() {
mux.Handle("/", index(db, "heb"))
mux.Handle("/en", index(db, "eng"))
mux.Handle("/stats", stats(db,"eng"))
mux.Handle("/up", uploadFileForServer(db,"eng"))
mux.Handle("/upload",upload())
addr := fmt.Sprintf(":%s", "12312")
server := http.Server{
Addr: addr,