废话不多说 直接开干!
用到库
import wsock.tcp.asynHttpServer; HTTP服务端支持文件上传,下载,下载支持断点续传支持多线程处理请求
import fsys;添加文件属性参数一为文件路径参数三可以用 | 操作符连接多个属性成功返回新属性,失败返回null
import inet.url;网址(URL)函数库 拼接 URL 路径
import qrencode.bitmap;创建二维码并用于生成GDI+位图 生成二维码数据
上才艺
import win.ui;
/*DSG{{*/
mainForm = win.form(text="文件拖动窗体或输入网址转换二维码----半成品2824030364";right=450;bottom=503;acceptfiles=1;max=false)
mainForm.add(
button={cls="button";text="生成二维码";left=311;top=413;right=429;bottom=442;z=16};//操作按钮
edit={cls="edit";left=8;top=413;right=303;bottom=442;edge=1;z=1};
plus={cls="plus";left=5;top=6;right=408;bottom=368;z=2}//输入拖拽窗口
)
/*}}*/
import wsock.tcp.asynHttpServer;
import fsys;
import inet.url;
import qrencode.bitmap;
var srvHttp = wsock.tcp.asynHttpServer();//创建单线程异步web服务器
srvHttp.documentRoot = io._exedir;//以程序目录为web根目录
srvHttp.run(
function(response,request){
import fsys;
import inet.url;
if(!fsys.isDir(request.path) ) {
if( ..io.exist(request.path) )
response.loadcode(request.path)
else {
request.path = fsys.getParentDir(request.path)
}
}
//列出目录及文件
response.write(" <title>Directory listing for /</title>
<body><h2>Directory listing for",request.path,"</h2><hr><ul>")
var file,dir = fsys.list(request.path,,"*.*");
for(i=1;#dir;1){
response.write('<li><a href="'
,inet.url.append(request.path,dir[ i ])
,'">'+tostring(i)+") /",dir[ i ],'/</a><br>\r\n');
}
for(i=1;#file;1){
response.write('<li><a href="'
,inet.url.append(request.path,file[ i ])
,'">'+tostring(i)+") ",file[ i ],'</a><br>\r\n');
}
}
);
var qrcode_url="";
var startUrl =srvHttp.getUrl(,true);//获取服务器访问地址
//生成二维码
function make_qrcode(url){
var qrBmp = qrencode.bitmap(url,0,0);
mainForm.plus.setBackground(qrBmp.copyBitmap(mainForm.plus.width));
mainForm.plus.redraw()
}
//根据拖入的文件目录重置服务器
function reload_server(folder,filename){
srvHttp.documentRoot = folder;
srvHttp.start();
var startUrl =srvHttp.getUrl(,true);//自动生成随机端口
qrcode_url = startUrl++"/"++inet.url.encode(filename);
mainForm.edit.text = qrcode_url;
make_qrcode(qrcode_url);
}
mainForm.edit.text = startUrl;
make_qrcode(startUrl);
mainForm.onDropFiles = function(files){
var path = files[1];
if(!fsys.isDir(path)){
//如果是文件,则以文件所在目录为站点目录
var folder = fsys.getParentDir(path);
var file_name = fsys.getFileName(path);
reload_server(folder,file_name);
}else{
reload_server(path,"");
}
}
mainForm.button.oncommand = function(id,event){
make_qrcode(mainForm.edit.text);
}
mainForm.show();
return win.loopMessage();//结束
效果图


1660

被折叠的 条评论
为什么被折叠?



