使用aardio开发的Windows平台高效二维码生成与识别工具 文件拖动窗体或输入网址转换二维码

废话不多说 直接开干!
用到库

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();//结束

效果图
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值