文件互传,局域网计算机传文件

时光荏苒,回忆大二的时候刚学会JSP,就迫不及待自己做个网站练练手。当时就想到了要做一个方便生活的网站,它可以方便多个用户之间传输文件,进行交流,也因此自己学了很多东西,在有关JSP的网页网站的制作上收获颇多。当时奋进的心情记忆犹新,然而已成过往……

本博客介绍ruby sinatra 上传文件网站,这样局域网的计算机就可以方便传文件了,理论上比。(我是为了和ubuntu方便传东西,因为是局域网也比较快)

目的介绍

使用sintra 建立一个具有文件传输文字拷贝功能的网站,便于在自己的不同电脑上传一些小数据。
本次参考的教程有
sinatra 上传文件实现
利用heroku搭建ruby网站项目 这个是我之前的博客
sintra 教程

预览

为了方便,反正是给自己用,布局就简单多了。后台也不做各种非法情况的检查了。
结果预览
页面分为两部分,左面是用来拷贝文字的,右面是用来上传下载文件的。
具体也不多描述,可以看代码了解。

需要安装的包

gem install sinatra -N
gem install sinatra-contrib -N

代码

后台目录结构如下
tree

run.rb

require 'sinatra'
require 'sinatra/reloader'
require 'erb'
# gem install sinatra-reloader

configure :development do
  register Sinatra::Reloader
  set :server, "webrick"
  set :bind, '0.0.0.0'
end

usedir="xxx"
#set :public_folder,File.dirname(__FILE__)+usedir
#set :views, File.dirname(__FILE__)+usedir

set :public_folder,"./cite"
set :views, "./cite"

get '/' do
    #return Dir.pwd.to_s
    redirect to("/copy")
    #redirect '/copy'
end

get '/copy' do
  fp=File.open("file/copy.txt")
  @copy_text=fp.read
  fp.close
  #p @copy_text

  files=Dir["./file/files/*"].sort_by{ |f| File.mtime(f) }

  if files.size > 10
    File.delete files[0]
    files.delete_at 0
  end

  files.reverse!

  html="<ol>"
  files.each do|e|
         html+="<li><a href='/download/#{e}'>#{e}</a>&nbsp; &nbsp;\
          <a href='/file_del/#{e}'>删除</a></li>"
  end

  html+="</ol>"

  @file_list=html
  erb :copy
end

post '/copy_text_submit' do
   #p params.keys
   p params["info"]
   fp=File.open("file/copy.txt","w")
   fp.puts params["info"]
   fp.close
   'OK '+params["info"]
end

#https://blog.csdn.net/vah101/article/details/41676695
post '/upload' do
    @error = ""
    unless params[:file] &&
           (tempfile = params[:file][:tempfile]) &&
           (filename = params[:file][:filename])
        @error = 'No file selected'
        redirect to('/copy')
    end

    target = "./file/files/#{filename}"
    File.open(target, 'wb') {|f| f.write tempfile.read }

    redirect '/copy'

end

get '/file_del/*' do
    fname=params['splat'][0]
    #p fname
    File.delete fname
    redirect '/copy'
end


get '/download/*' do
    fname=params['splat'][0]
    #p fname
    send_file fname
end

copy.erb
注意这里 传输文字的地方我使用了 ajax。

<!DOCTYPE html>
<html>
<body>

<div id="main" style="width:900px">

<div id="left" style="width:400px;float:left;">
<textarea id="copy_text" name="message" rows="10" cols="30">
<%=@copy_text%>
</textarea>

<button type="button" onclick="submit_ajax()">提交!</button>

<div id="output" name="output" style="height:200px;width:400px;font-size:18px"></div>

</div>

<div id="right" style="width:480px;float:left; margin-left:20px">

<form action='/upload' enctype="multipart/form-data" method='POST'>
    请选择上传的文件 </br> <input name="file" type="file" /> &nbsp;&nbsp;
&nbsp;&nbsp;
    <input type="submit" value="Upload" />


    <p> <%=@error%>  </p>

</form>

</br>

<div>
<%=@file_list%>
</div>

</div>

</div>

<script type="text/javascript">
    function submit_ajax() {
        var text = document.getElementById('copy_text').value;
        if (text.length < 1) {
            //alert('格式不正确!');
            return;
        }

        var req="info="+text;

        var xmlhttp;
        //  IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码
        xmlhttp=new XMLHttpRequest();

        xmlhttp.onreadystatechange=function()  {
            if (xmlhttp.readyState==4 && xmlhttp.status==200)
            {
                document.getElementById("output").innerHTML=xmlhttp.responseText;
            }
        }


        xmlhttp.open('post', '/copy_text_submit', true);
        xmlhttp.onload = function(resp) {
            if (xmlhttp.status == 200) {
                //alert('提交成功!'+ req);
            } else {
                alert('Error:' + xmlhttp.status);
            }
        };
        xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
        //req=encodeURI(req)
        xmlhttp.send(req);
    }
</script>

</body>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在局域网互传文件常用的软件包括: 1. 快: 支持 Windows、macOS 和 Linux 系统的文件输工具,可以在局域网内进行文件输和共享。 2. 迅雷快: 一款支持 Windows 和 Android 系统的文件输工具,可以在局域网内进行文件输和共享。 3. Airdroid: 一款支持 Windows、macOS 和 Android 系统的文件输工具,可以在局域网内进行文件输和共享。 4. LAN Messenger: 一款支持 Windows、macOS 和 Linux 系统的即时通讯工具,可以在局域网内进行文件输和共享。 5. 内网穿透: 一种技术,可以让局域网内的电脑直接访问互联网上的服务器,也可以用来在局域网内进行文件输和共享。 这些软件都可以满足在局域网互传文件的需求。 ### 回答2: 局域网互传文件的软件有很多种,以下是其几个常见的软件: 1. 蓝牙输:蓝牙是一种无线通信技术,可以通过蓝牙输功能在局域网互传文件。用户只需在设备上开启蓝牙并进行匹配连接,然后选择要输的文件进行发送,接收方在同一局域网内即可接收文件。 2. FTP服务:FTP是文件输协议,在局域网内使用FTP软件可以方便地进行文件输。用户可以通过FTP服务搭建服务器,然后使用支持FTP协议的客户端软件进行上和下载文件。 3. 联机助手:联机助手是一种局域网文件软件,通过该软件可以方便地在局域网文件。用户只需要在发送和接收两台设备上分别安装联机助手,并通过该软件进行文件输。 4. AirDrop(苹果设备):AirDrop是苹果设备上的一种无线文件输功能。用户可以通过AirDrop在同一局域网内直接互传文件,无需使用任何第三方软件。只需要打开AirDrop功能并进行匹配连接,就可以方便地进行文件输。 总之,局域网互传文件的软件有很多种选择,用户可以根据自己的需求和设备类型选择适合的软件进行文件输。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值