Skip to content

Commit 92a586d

Browse files
committed
file upload like l3p3.de/spende
1 parent 67a1298 commit 92a586d

File tree

1 file changed

+81
-0
lines changed

1 file changed

+81
-0
lines changed

upload.html

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
<?
2+
const UPLOAD_FOLDER="data/uploads/";
3+
const UPLOADS_CSV=UPLOAD_FOLDER+"uploads.csv";
4+
5+
const {importHead}=globals.functions;
6+
const account=service_require_try("server/account/account.new");
7+
const fsp=require("fs/promises");
8+
9+
let folder="anonym";
10+
let nickname;
11+
account:{
12+
if(!account) break account;
13+
const {allowed,data}=account.authUserByInput(input);
14+
if(!allowed) break account;
15+
folder=data.account.username;
16+
nickname=data.account.nickname;
17+
};
18+
19+
const tryDirCreate=async dir=>{
20+
try{
21+
await fsp.mkdir(dir);
22+
return true;
23+
}catch(e){return false};
24+
}
25+
?><!DOCTYPE html>
26+
<html>
27+
<head>
28+
<?=importHead({
29+
input,
30+
title: "Dateien-Uploader",
31+
tabs: 2,
32+
})?>
33+
</head>
34+
<body>
35+
<h1>Dateien-Uploader</h1>
36+
<?
37+
if(input.file){
38+
log("USER: "+folder+"; UPLOADED: "+input.file.filename);
39+
await tryDirCreate(UPLOAD_FOLDER);
40+
const target_folder=UPLOAD_FOLDER+folder+"/";
41+
await tryDirCreate(target_folder);
42+
const d=new Date();
43+
const target_name=`${d.getFullYear()}-${String(d.getMonth()+1).padStart(2,"0")}-${String(d.getDate()).padStart(2,"0")}_${input.file.filename}`;
44+
const target=target_folder+target_name;
45+
await fsp.writeFile(target,input.file.data);
46+
// UPLOAD_TIME; FILENAME; FILE_TYPE; FILE_SRC; FILE_SIZE
47+
await fsp.appendFile(UPLOADS_CSV,[
48+
d.getTime(),
49+
input.file.filename,
50+
input.file.type,
51+
target,
52+
input.file.data.length,
53+
].join("; ")+"\n");
54+
delete input.file.data;
55+
?> <p>Datei Erfolgreich Hochgeladen.</p>
56+
<?
57+
}
58+
else{
59+
log("USER: "+folder+"; visited, not uploaded.");
60+
?> <p>Lade Dateien hoch die auf Lando's Server landen sollen, ich nutze diese Funktion bspw. um Dateien von dem Handy auf den Server zu bekommen.</p>
61+
<p>Info: Dein Upload wird im <code>uploads/<?=folder?></code> abgelegt werden. <?=nickname?("Angemeldet als: "+nickname):"Datei Upload vollkommen Anonym, nicht nachverfolgbar"?>.</p>
62+
<form onsubmit="return lock_all();" method=post enctype=multipart/form-data>
63+
<input type=file name=file>
64+
<p><button id=btn_submit>DATEI HOCHLANDEN</button></p>
65+
</form>
66+
<div style=display:none id=view_uploading>
67+
<progress style=width:100%></progress>
68+
<p><b>Datei wird hochgeladen bitte hab Geduld...</b></p>
69+
</div>
70+
<script>
71+
function lock_all(){
72+
console.log("file is uploading...");
73+
document.getElementById("btn_submit").disabled=true;
74+
document.getElementById("view_uploading").style.display="";//.disabled=true;
75+
return true;
76+
}
77+
</script>
78+
<?
79+
}
80+
?> </body>
81+
</html>

0 commit comments

Comments
 (0)