message if upload was successfull or not

This commit is contained in:
lukas 2021-09-26 22:30:32 +02:00
parent fd5542c528
commit 6c553e6f48
3 changed files with 35 additions and 40 deletions

View File

@ -12,9 +12,6 @@ import (
func addUploadHandler() { func addUploadHandler() {
api.AddHandler("fileupload", api.VideoNode, api.PermUser, func(ctx api.Context) { api.AddHandler("fileupload", api.VideoNode, api.PermUser, func(ctx api.Context) {
fmt.Println("we are in file upload handler")
fmt.Printf("permission: %s\n", ctx.PermID().String())
// get path where to store videos to // get path where to store videos to
mSettings, PathPrefix, _ := database.GetSettings() mSettings, PathPrefix, _ := database.GetSettings()
@ -28,7 +25,6 @@ func addUploadHandler() {
videoparser.InitDeps(&mSettings) videoparser.InitDeps(&mSettings)
//length := req.ContentLength
for { for {
part, err := mr.NextPart() part, err := mr.NextPart()
if err == io.EOF { if err == io.EOF {
@ -43,6 +39,7 @@ func addUploadHandler() {
vidpath := PathPrefix + mSettings.VideoPath + part.FileName() vidpath := PathPrefix + mSettings.VideoPath + part.FileName()
dst, err := os.OpenFile(vidpath, os.O_WRONLY|os.O_CREATE, 0644) dst, err := os.OpenFile(vidpath, os.O_WRONLY|os.O_CREATE, 0644)
if err != nil { if err != nil {
ctx.Error("error opening file")
return return
} }
@ -53,9 +50,6 @@ func addUploadHandler() {
for { for {
cBytes, err := part.Read(buffer) cBytes, err := part.Read(buffer)
if cBytes > 0 { if cBytes > 0 {
//read = read + int64(cBytes)
//p = float32(read) / float32(length) * 100
//fmt.Printf("progress: %v \n", p)
dst.Write(buffer[0:cBytes]) dst.Write(buffer[0:cBytes])
} }
@ -69,6 +63,8 @@ func addUploadHandler() {
_ = dst.Close() _ = dst.Close()
} }
ctx.Text("finished all files") ctx.Json(struct {
Message string
}{Message: "finished all files"})
}) })
} }

View File

@ -6,7 +6,7 @@
padding: 20px; padding: 20px;
} }
.dropArea:hover{ .dropArea:hover {
cursor: pointer; cursor: pointer;
} }
@ -14,38 +14,17 @@
border-color: purple; border-color: purple;
} }
p {
margin-top: 0;
}
.myForm { .myForm {
margin-bottom: 10px; margin-bottom: 10px;
} }
.gallery { .progresswrapper {
width: 100%;
height: 5px;
margin-top: 3px;
}
.finished {
margin-top: 10px; margin-top: 10px;
} text-align: center;
.gallery img {
width: 150px;
margin-bottom: 10px;
margin-right: 10px;
vertical-align: middle;
}
.button {
display: inline-block;
padding: 10px;
background: #ccc;
cursor: pointer;
border-radius: 5px;
border: 1px solid #ccc;
}
.button:hover {
background: #ddd;
}
.fileElem {
display: none;
} }

View File

@ -6,6 +6,7 @@ import GlobalInfos from '../../utils/GlobalInfos';
export const DropZone = (): JSX.Element => { export const DropZone = (): JSX.Element => {
const [ondrag, setDrag] = useState(0); const [ondrag, setDrag] = useState(0);
const [percent, setpercent] = useState(0.0); const [percent, setpercent] = useState(0.0);
const [finished, setfinished] = useState<string | null>(null);
const theme = GlobalInfos.getThemeStyle(); const theme = GlobalInfos.getThemeStyle();
@ -23,7 +24,17 @@ export const DropZone = (): JSX.Element => {
xhr.onload = function (): void { xhr.onload = function (): void {
console.log(this.responseText); // whatever the server returns console.log(this.responseText); // whatever the server returns
const resp = JSON.parse(this.responseText);
if (resp.Message === 'finished all files') {
setfinished('');
} else {
setfinished(resp.Message);
}
setTimeout(() => {
setpercent(0); setpercent(0);
setfinished(null);
}, 2000);
}; };
xhr.upload.onprogress = function (e): void { xhr.upload.onprogress = function (e): void {
@ -79,9 +90,18 @@ export const DropZone = (): JSX.Element => {
}}> }}>
<div className={style.myForm}> <div className={style.myForm}>
<p>To upload new Videos darg and drop them here or click to select some...</p> <p>To upload new Videos darg and drop them here or click to select some...</p>
<div style={{width: '100%', height: 5, marginTop: 3}}> <div className={style.progresswrapper}>
<div style={{width: percent + '%', backgroundColor: 'green', height: 5}} /> <div style={{width: percent + '%', backgroundColor: 'green', height: 5}} />
</div> </div>
{finished !== null ? (
finished === '' ? (
<div className={style.finished}>Finished uploading</div>
) : (
<div className={style.finished}>Upload failed: {finished}</div>
)
) : (
<></>
)}
</div> </div>
</div> </div>
); );