saobee 发表于 2020-5-21 23:05

【aardio】局域网文件快传

本帖最后由 saobee 于 2020-5-21 23:11 编辑

开发目的:安装APP或数据线传文件太麻烦,用微信又无法发送大文件,于是参考一款叫“隔空传物”的软件,使用aardio编写了此软件

原理:运行程序后,自动创建web服务器,并生成内网地址二维码,手机扫码即可下载文件或浏览文件夹使用方式:拖动文件夹或文件到程序窗体上,自动生成对应路径二维码,手机浏览器扫码可下载或浏览目录(不建议使用微信或其它限制下载的APP)
程序截图:


aardio语言是一款很强大很快捷的windows桌面程序开发语言,有兴趣的朋友可以下载使用

文件下载地址:https://ww.lanzouj.com/icvj20j


//===========================源代码
import win.ui;
/*DSG{{*/
mainForm = win.form(text="文件快传拖动文件到窗体上";right=374;bottom=448;acceptfiles=1;max=false)
mainForm.add(
button={cls="button";text="OK";left=311;top=413;right=369;bottom=442;z=3};
edit={cls="edit";left=8;top=413;right=303;bottom=442;edge=1;z=1};
plus={cls="plus";left=5;top=6;right=368;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;
    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();
//===========================源代码.end

yixiqiao 发表于 2020-5-21 23:34

saobee 发表于 2020-5-21 23:25
暂时还只能电脑传手机,其实手机传电脑也可以实现

感觉手机传电脑是刚需 有时候微信的文件传电脑打印 不想登录电脑微信我记得以前有个网址电脑和手机同时打开那个网址 就能手机给电脑传

yixiqiao 发表于 2020-5-22 07:43

一恶遮百善 发表于 2020-5-22 00:10
Snapdrop   可以试试这个,好像是同网络下,打开网页就能传

电脑连的有线网手机连的无线网 这算不算一个网络

Finn 发表于 2020-5-21 23:21

{:1_889:} 支持楼主,就需要这种优秀的绿色软件!

523067000 发表于 2020-5-21 23:21

谢谢楼主分享了!!!!

yixiqiao 发表于 2020-5-21 23:22

手机给电脑传 怎么操作

saobee 发表于 2020-5-21 23:25

yixiqiao 发表于 2020-5-21 23:22
手机给电脑传 怎么操作

暂时还只能电脑传手机,其实手机传电脑也可以实现

basstk 发表于 2020-5-21 23:31

非常好,感谢分享,最近也用aardio开发,准备开发一款模拟操作的软件

一恶遮百善 发表于 2020-5-22 00:10

yixiqiao 发表于 2020-5-21 23:22
手机给电脑传 怎么操作

Snapdrop   可以试试这个,好像是同网络下,打开网页就能传

我为人人 发表于 2020-5-22 00:22

华为P40好像可以电脑和手机互传文件

xiaomoge123 发表于 2020-5-22 01:23

用着不错 换个好看的图标就更好了
页: [1] 2
查看完整版本: 【aardio】局域网文件快传