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

1
.gitignore vendored
View File

@@ -3,3 +3,4 @@ Logs/
progs.db
tmpdir/
.vscode/
data/

14
html/uploadfile.html Normal file
View 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}}

53
main.go
View File

@@ -6,6 +6,7 @@ import (
"database/sql"
"fmt"
"html/template"
"io"
"log"
"net/http"
"os"
@@ -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.
@@ -250,7 +299,9 @@ func index(sqldb *sql.DB, lang string) http.Handler {
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,