test 02 directory list by cgi
จากคราวที่แล้วที่ได้ทดสอบ ให้ python เขียน html ดู คราวนี้จึงได้ทดสอบการใช้
cgi ในการเขียนหน้าเว็บ โดย python
ขั้นแรก จัดเตรียม เซิฟเวอร์ให้พร้อมที่จะรัน cgi
ทดสอบรันโค้ดที่ได้เขียนมา
โดยเข้าไปที่ 0.0.0.0:8000/#dir/#file โดย #dir คือ directory ที่อยู่ภายใน server และ #file คือชื่อของ file
--code--
#!/usr/bin/python
print "Content-type: text/html\n\n"
import cgi, cgitb, os
datain = cgi.FieldStorage()
directory, srcq = "", ""
def spl(text):
text = text.replace("/", "");
text = text.replace(".", "");
text = text.replace("~", "__sp__");
return text
def chknxtnode(text1, text2):
root = ""
leaf = ""
if len(text1) > len(text2):
root = text2
leaf = text1
else:
root = text1
leaf = text2
i, result = 0, 1
while i < len(root):
if root[i] != leaf[i]:
result = 0
i += 1
return result
def space(num):
for i in range(num):
print " "
def namefol(part):
part = part.split("/")
return part[len(part)-1]
def nbfol(part):
print " <input type=\"button\" value=\"show\" name=\""+spl(part)+"\" id=\""+spl(part)+"=show\" onclick=\"javascript:showtools(name)\"> <"+spl(part)+" style=\"display:none\"><input type=\"button\" name=\""+part+"\" value=\"rename\" onclick=\"javascript:dirrename(name)\"><input type=\"button\" name=\""+part+"\" value=\"new file\" onclick=\"javascript:dirnewfile(name)\"></"+spl(part)+">"
def nbfile(part):
print " <input type=\"button\" value=\"show\" name=\""+spl(part)+"\" id=\""+spl(part)+"=show\" onclick=\"javascript:showtools(name)\"> <"+spl(part)+" style=\"display:none\"><input type=\"button\" name=\""+part+"\" value=\"delete\" onclick=\"javascript:filedelete(name)\"><input type=\"button\" name=\""+part+"\" value=\"rename\" onclick=\"javascript:filerename(name)\"></"+spl(part)+">"
for i in datain.keys():
exec(i + " = " + datain[i].value)
print """
<script src="http://code.jquery.com/jquery-1.11.2.min.js"></script>
<script>
function jumpto(){
var query = document.getElementById("txtb1").value;
var srcq = document.getElementById("txtb2").value;
var old = \"""" + directory + """\"
if(query == "-"){
window.location.href = "dirls.py?directory=\\\""+old+"\\\"&srcq=\\\""+srcq+"\\\"";
}else{
window.location.href = "dirls.py?directory=\\\""+query+"\\\"&srcq=\\\""+srcq+"\\\"";
}
}
function showtools(part){
var enp = $(part);
var data = document.getElementById(part+"=show");
if(data.value == "show"){
data.value = "hide";
enp.show();
}else{
data.value = "show";
enp.hide();
}
}
function check(part){
$(part).toggle();
}
function dirrename(part){
while(true){
datas = part.split("/")
var folname = datas[datas.length - 1];
var dirname = "";
for(var i = 0; i < datas.length - 1; i++){
dirname += datas[i];
}
var newname = prompt("Rename this folder to", folname);
if(newname == null){
break;
}
if($(dirname+newname).length == 0){
xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", "command.py?type=\\\"rename\\\"&dir=\\\""+part[0]+"\\\"&newname=\\\""+newname+"\\\"");
xmlhttp.send();
break;
}else{
alert("sorry guys but this name is exists in directory");
}
}
}
function dirnewfile(part){
}
function filedelete(part){
}
function filerename(part){
}
</script>
"""
print "<html><head></head><body><b>Directory : <input type=\"textbox\" name=\"txtbdir\" id=\"txtb1\"> \"-\" for still use old directory<br>Search for : </b><input type=\"textbox\" name=\"txtsrc\" id=\"txtb2\"> <input type=\"button\" value=\"accept\" name=\"butselect\" onclick=\"javascript:jumpto()\"><br><br>"
try:
if (directory != "") and (srcq == ""):
print "<h1>Search in " + directory + "</h1>"
try:
data = os.walk(directory);
updir = {}
updir[0] = str(directory)
for part in data:
while 1:
if chknxtnode(updir[len(updir) - 1], part[0]):
updir[len(updir)] = part[0]
break
else:
dummy = {}
for i in range(len(updir) - 1):
dummy[i] = updir[i]
updir = dummy
space(3*(len(updir)-2))
print "<b><a href=\""+part[0]+"\">"+part[0]+"</a></b> "
nbfol(part[0])
print "<br>"
for file in part[2]:
space(3*(len(updir)-1))
print "<a href=\""+part[0]+file+"\">"+file+"</a> size : "+ str(os.stat(str(part[0])+"/"+str(file)).st_size) + " b "
nbfile(str(part[0])+str(file))
print "<br>"
except: print "directory not exists !!";
elif directory != "":
print "<h1>Search for " + srcq + " in " + directory + "</h1>"
try:
data = os.walk(directory);
for part in data:
if srcq in namefol(part[0]):
print part[0]
nbfol(part[0])
print "<br>"
for file in part[2]:
if srcq in file:
space(5);
print part[0] + " --> <a href=\""+str(part[0])+"/"+str(file)+"\">"+file+"</a>"
nbfile(str(part[0])+"/"+str(file))
print "<br>"
except: print "directory not exists !!";
else: gotoexcept
except: print "<h2>Please enter some directory and push select...</h2>"
ผลการทดสอบของ code
ใส่ directory ที่ต้องการค้นหาลงไป
หลังจากกด accept แล้วจะแสดงผลการค้นหาขึ้นมา
ทดสอบค้นหาคำ โดยการพิมพ์ key word ที่ต้องการค้นหาลงไปในช่อง search for
หลังจากนั้นกด accept จะปรากฎ file ที่มีชื่อตรงกับคำที่ใส่ลงไป 

ไม่มีความคิดเห็น:
แสดงความคิดเห็น