精华内容
下载资源
问答
  • 1.首先要确保已存在的模板在服务器上,如图:  目的是从网页上下载这个已存在的excel表格模板 2.核心代码(此处有两种写法) a. 这种方式适用于各个浏览器,也解决了IE上不允许的情况,可能会出现安全级别问题...

    1.首先要确保已存在的模板在服务器上,如图:

     目的是从网页上下载这个已存在的excel表格模板

    2.核心代码(此处有两种写法)

    a.

    这种方式适用于各个浏览器,也解决了IE上不允许的情况,可能会出现安全级别问题提示文件存在危险。

    b.

    利用HttpHeader的方式,这种方式在IE上运行不了,可以读取到数据流存于头部信息,但是到不出来,在其他浏览器没有问题。主要是IE不支持二进制方式读取。

    HttpServletRequest代表了客户端请求,客户端向服务器请求的所有数据都在HttpServletRequest里。

     

    展开全文
  • 在工作过程中需要经常发送安装包或文件给同事,亲测共享文件夹拷贝速度比较慢,然而局域网内使用python搭建的简易下载服务器速度比较快。 一、进到需要共享的目录 cd D:\软件包\办公软件 二、开启http服务器: ...

    在工作过程中需要经常发送安装包等大文件给同事,亲测共享文件夹拷贝、QQ、微信等聊天工具,大文件传输速度效率不高。
    然而局域网内使用python搭建的简易下载服务器速度比较快,百兆网卡下载速度随便达到10MB/s以上,千兆网卡更不用说,因此分享一下,希望对各位工作有帮助。

    一、进到需要发送的安装包目录

    cd D:\软件包\办公软件
    

    二、开启http服务器:

    python2
    python -m SimpleHTTPServer 3001
    
    python3
    python -m http.server 3000
    
    • -m module-name
    • http.server python模块- HTTP服务器
    • 3000 为端口,可以指定为其他未被使用的端口

    三、访问服务器

    本机访问:浏览器输入http://172.22.213.64:3000/或http://localhost:3000/。
    在这里插入图片描述
    手机或其他电脑访问(统一WIFI或局域网):http://172.22.213.64:3000/
    在这里插入图片描述

    四、下载速度测试

    环境
    win7下,百兆网卡(网卡型号信息中,没有Gi或者1000M之类的字样,说明是普通百兆网卡):
    在这里插入图片描述
    下载速度测试
    [图片]
    通常下载速度单位MB/s,网络带宽单位Mbps,了解计算机的人都知道

    1字节=8个字符
    1MB/s=8Mbps,
    

    则:34.6MB/s=34.6*8Mbps=276.8Mbps
    这个说明276.8Mbps的带宽下,下载速度才能达到34.6MB/s,可以说明python -m http.server搭建的下载服务器,达到的下载速度是非常快的。

    展开全文
  • linux 下载web服务器文件

    千次阅读 2016-08-23 21:46:32
    一、linux C下发送http请求,下载web服务器文件 注:发生的请求为http开头的web服务器,数据没有经过加密传输, 请求https 服务器上文件,需要openssl的接口来认证密钥,才能请求文件。 1、封装的http请求...

    一、linux C下发送http请求,下载web服务器文件


    注:发生的请求为http开头的web服务器,数据没有经过加密传输, 请求https 服务器上文件,需要openssl的接口来认证密钥,才能请求文件。


    1、封装的http请求接口

    #include <stdio.h>

    #include <string.h>
    #include <sys/socket.h>
    #include <arpa/inet.h>
    #include <fcntl.h>
    #include <unistd.h>
    #include <netdb.h>
    #include <stdlib.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <pthread.h>
    #include <sys/time.h>


    typedef struct {    
    int client_socket;
    int quit;
    int status_code;//HTTP/1.1 '200' OK    
    char content_type[128];//Content-Type: application/gzip    
    long content_length;//Content-Length: 11683079    
    }RespHead_t;
    static RespHead_t resp;


    static void parse_url(const char *url, char *domain, int *port, char *file_name)
    {  
    /*通过url解析出域名, 端口, 以及文件名*/
    int j = 0;  
    int start = 0;
    *port = 80;
    char *patterns[] = {"http://", "https://", NULL};
    int i;
    for(i = 0; patterns[i]; i++)
    if (strncmp(url, patterns[i], strlen(patterns[i])) == 0)
    start = strlen(patterns[i]);
    //解析域名, 这里处理时域名后面的端口号会保留
    for( i = start; url[i] != '/' && url[i] != '\0'; i++, j++)
    domain[j] = url[i];
    domain[j] = '\0';
    //解析端口号, 如果没有, 那么设置端口为80
    char *pos = strstr(domain, ":");
      if (pos)        
    sscanf(pos, ":%d", port);
    //删除域名端口号
    for( i = 0; i < (int)strlen(domain); i++)
        {        
        if (domain[i] == ':')        
    {            
    domain[i] = '\0';
    break;
    }
    }
        //获取下载文件名    
        j = 0;    
    for ( i = start; url[i] != '\0'; i++)
    {        
    if (url[i] == '/')        
    {            
    if (i !=  strlen(url) - 1)                
    j = 0;            
    continue;        
    }        
    else            
    file_name[j++] = url[i];    
    }    
    file_name[j] = '\0';
    }


    static void get_resp_header(RespHead_t *resp,const char *response)
    {    
    /*获取响应头的信息*/    
       
    char *pos = strstr(response, "HTTP/");    
    if (pos)        
    sscanf(pos, "%*s %d", &resp->status_code);//返回状态码    
    pos = strstr(response, "Content-Type:");//返回内容类型    
    if (pos)        
    sscanf(pos, "%*s %s", resp->content_type);    
    pos = strstr(response, "Content-Length:");//内容的长度(字节)    
    if (pos)        
    sscanf(pos, "%*s %ld", &resp->content_length);    
    }
    static void get_ip_addr(char *domain, char *ip_addr)
    {    
    /*通过域名得到相应的ip地址*/    
    struct hostent *host = gethostbyname(domain);    
    int i;    
    if (!host)    
    {        
    ip_addr = NULL;        
    return;    
    }    
    for (i = 0; host->h_addr_list[i]; i++)    
    {        
    strcpy(ip_addr, inet_ntoa( * (struct in_addr*) host->h_addr_list[i]));        
    break;    
    }
    }
    static void progressBar(long cur_size, long total_size)
    {    
    /*用于显示下载进度条*/    
    float percent = (float) 
    cur_size / total_size;    
    const int numTotal = 50;    
    int numShow = (int)(numTotal * percent);    
    if (numShow == 0)        
    numShow = 1;    
    if (numShow > numTotal)        
    numShow = numTotal;    
    char sign[51] = {0};    
    memset(sign, '=', numTotal);    
    printf("\r%.2f%%\t[%-*.*s] %.2f/%.2fMB", percent * 100, numTotal, numShow, sign, cur_size / 1024.0 / 1024.0, total_size / 1024.0 / 1024.0);    fflush(stdout);    
    if (numShow == numTotal)        
    printf("\n");
    }

    void quitDownhttpFile(void)
    {
    int timeout=0;
    resp.quit=1;
    if(resp.client_socket>0){
    close(resp.client_socket);
    resp.client_socket=-1;
    }
    do{
    if(++timeout>20)
    break;
    usleep(100);
    }while(resp.quit!=1);
    }
    int DownhttpFile(const char *url,void StartDownFile(const char *filename,int streamLen),void GetStreamData(const char *data,int size),void EndDownFile(int FileSize))
    {
    char domain[64] = {0}; 
    char ip_addr[16] = {0};    
    int port = 80; 
    char file_name[256] = {0}; 
      int ret=0;
    printf(" DownhttpFile  url=%s\n",url);   


    memset(&resp,0,sizeof(RespHead_t));
    resp.quit=0;
    printf("1: Parsing url... \n"); 
    parse_url(url, domain, &port, file_name);
    printf("2: Get ip address...\n"); 
    printf("\n>>>>Detail<<<<"); 
    printf("URL: %s\n", url); 
    printf("DOMAIN: %s\n", domain);    
    printf("PORT: %d\n", port);    
    printf("FILENAME: %s\n\n", file_name);
    get_ip_addr(domain, ip_addr); 
    if (strlen(ip_addr) == 0) 
    {  
    printf("can not get ip address\n");   
    return -1;  
    }
    printf("IP: %s\n", ip_addr);
    //设置http请求头信息
    char header[1024] = {0};
    sprintf(header,"GET %s HTTP/1.1\r\n"\
    "Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\r\n"\
    "User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537(KHTML, like Gecko) Chrome/47.0.2526Safari/537.36\r\n"\ 
    "Host:%s\r\n"\ 
    "Connection:close\r\n"\   
    "\r\n"\   
    ,url, domain); 
    //printf("%s\n%d", header, (int) strlen(header)); 
    //创建套接字
    resp.client_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); 
    if (resp.client_socket < 0) 
    {  
    printf("invalid socket descriptor: %d\n", resp.client_socket); 
    return -1;
    }  
    //创建地址结构体  
    struct sockaddr_in addr;
    memset(&addr, 0, sizeof(addr));    
    addr.sin_family = AF_INET; 
    addr.sin_addr.s_addr = inet_addr(ip_addr); 
    addr.sin_port = htons(port);//连接服务器
    printf("3: Connect server...\n"); 
    int res = connect(resp.client_socket, (struct sockaddr *) &addr, sizeof(addr));
    if (res == -1) 
    {
    printf("connect failed, return: %d\n", res);
    ret=-1;
    goto exit0;
    }
    printf("4: Send request...\n");
    //向服务器发送下载请求
    write(resp.client_socket, header, strlen(header));
    int mem_size = 4096;
    int length = 0;
    int len;
    char *buf = (char *) calloc(1,mem_size * sizeof(char)); 
    if(buf==NULL)
    {
    ret=-1;
    goto exit0;
    }
    char *response = (char *) malloc(mem_size * sizeof(char)); 
    if(response==NULL)
    {
    ret=-1;
    goto exit1;
    }
    char * temp =NULL;
    //每次单个字符读取响应头信息, 仅仅读取的是响应部分的头部, 后面单独开线程下载

    while ((len = read(resp.client_socket, buf, 1)) != 0)
    {
    if(length + len > mem_size)
    {  
    //动态内存申请, 因为无法确定响应头内容长度
    printf("length + len =%d mem_size=%d\n",length + len,mem_size);
    mem_size *= 2; 
    temp= (char *) realloc(response, sizeof(char) * mem_size);
    if (temp == NULL) 
    {  
    printf("realloc failed\n");
    ret=-1;
    goto exit2;
    }
    response = temp;
    }
    buf[len] = '\0';
    sprintf(response+length,"%s",buf);
    //找到响应头的头部信息, 两个"\n\r"为分割点 
    int flag = 0;
    int i;
    for (i = strlen(response) - 1; response[i] == '\n' || response[i] == '\r'; i--, flag++);
    if (flag == 4) 
    break;  
    length += len; 
    }  
    //printf("\n>>>>Response header:<<<<\n%s", response);
    get_resp_header(&resp,response);
    StartDownFile((const char *)file_name,resp.content_length);
    printf("5: Start thread to download...\n");  
    int buf_len = mem_size;//read 4k each time    

    length = 0;    
    while ((len = read(resp.client_socket, buf, buf_len)) != 0 && length < resp.content_length)    
    {
    if(resp.quit==1){
    printf("GetStreamData quit ...\n");
    break;
    }
    GetStreamData(buf,len);
    length += len;        
    //progressBar(length, resp.content_length);
    }    
    if (length == resp.content_length)        
    {
    printf("Download successful ^_^\n\n");
    }
    EndDownFile(resp.content_length);
    exit2:
    free(response);
    exit1:
    free(buf);
    exit0:
    if(resp.client_socket>0)
    close(resp.client_socket);
    resp.client_socket=-1;
    resp.quit=2;
    return ret;
    }


    static FILE *fp=NULL ;
    static void StartDownFile(const char *filename,int fileSize)
    {
    fp= fopen(filename, "w+");    
    if (fp ==NULL)    
    {        
    printf("Create file failed\n");   
    }  
    }
    static void GetStreamData(const char *data,int size)
    {
      fwrite( data, size,1fp);
    }
    static void EndDownFile(int FileSize)
    {
    fclose(fp);

    }


    int main(int argc, char  *argv[])
    {    
    char url[]="http://fdfs.xmcdn.com/group7/M01/A3/8D/wKgDX1d2Rr6w3CegABHDHZzUiUs448.mp3";
    int i=0;
    DownhttpFile((const char *)url,StartDownFile,GetStreamData,EndDownFile);
    return 0;
    }


    2、经过验证可以下载web服务上的文件,但换了多个网络测试之后,发现部分网络发送http请求之后,服务器回出现302的响应。

    重定向这个请求到另外一个服务器,导致下载不了文件。为了稳定性,最后还是采用 libghttp这个库,来请求web服务器文件


    展开全文
  • 配置下载文件的访问路径 user root; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; e...
    1. 配置html访问路径
    2. 配置图片访问路径
    3. 配置下载文件的访问路径
    user root;  
    worker_processes 1;  
    
    #error_log logs/error.log;  
    #error_log logs/error.log notice;  
    #error_log logs/error.log info;  
    
    #pid    logs/nginx.pid;  
    
    
    events {  
      worker_connections 1024;  
    }  
    
    
    http {  
      include    mime.types;  
      default_type application/octet-stream;  
    
      log_format main '$remote_addr - $remote_user [$time_local] "$request" ' 
               '$status $body_bytes_sent "$http_referer" ' 
               '"$http_user_agent" "$http_x_forwarded_for"';  
    
      access_log /home/hy/nginx_download/logs/access.log main;  
    
      sendfile    on;  
      #tcp_nopush   on;  
    
      #keepalive_timeout 0;  
      keepalive_timeout 65;  
    
      #gzip on;  
    
    
      server {  
        listen    80;#端口号  
        server_name localhost;#本机  
    
        charset utf-8;  
    
        #access_log logs/host.access.log main;  
    
      location ~ .*\.(gif|jpg|jpeg|png)$ {  
        expires 24h;  
          root /home/hy/nginx_download/user/img;#指定图片存放路径  
          access_log /home/hy/nginx_download/logs/images.log;#日志存放路径  
          proxy_store on;  
          proxy_store_access user:rw group:rw all:rw;  
          proxy_temp_path     /home/hy/nginx_download/user/img;#图片访问路径  
          proxy_redirect     off;  
          proxy_set_header    Host 127.0.0.1;  
          client_max_body_size  10m;  
          client_body_buffer_size 1280k;  
          proxy_connect_timeout  900;  
          proxy_send_timeout   900;  
          proxy_read_timeout   900;  
          proxy_buffer_size    40k;  
          proxy_buffers      40 320k;  
          proxy_busy_buffers_size 640k;  
          proxy_temp_file_write_size 640k;  
          if ( !-e $request_filename)  
          {  
             proxy_pass http://127.0.0.1;#默认80端口  
          }  
      }
      location /bin {
               charset  utf-8;
               root /home/hy/nginx_download/user; #配置下载文件的路径
            #alias /data/download/;
    
                if ($request_filename ~* ^.*?\.(txt)$){
                add_header Content-Disposition 'attachment';
                add_header Content-Type: 'APPLICATION/OCTET-STREAM';}
    
                autoindex on;
                autoindex_exact_size   off;
                autoindex_localtime    on;
            access_log  /home/hy/nginx_download/logs/download.log  main;
            }
    
    
        location / {  
          root  /home/hy/nginx_download/user/; #html访问路径 
          index index.html; #html文件名称 
    
        } 
    
        error_page 404       /404.html;
       }
    }
    
    展开全文
  • 开启简单的web服务器成为文件下载服务器 1 进入需要共享的目录 2 运行命令 开启web服务 命令: python -m SimpleHTTPServer (python 2 版本使用此条命令) 3 python 3版本的命令 命令: python -m ...
  • Web服务器

    2015-07-02 09:21:06
    Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档。[1] 你可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。目前最主流的三个Web服务器是...
  • 有一个dll文件如何在实现客户端从服务器下载并保存在本地?求大神帮忙
  • 一、Web应用服务器   Web服务器是运行及发布Web应用的大容器,只有将开发的Web项目放到该容器中,才能使网络中的所有用户通过浏览器进行访问。常用的有BEA WebLogic服务器、IBM WebSphere应用服务器、Tomcat...
  • js:文件下载:window.win = open(data);  setTimeout('win.document.execCommand("SaveAs")', 500);  data为路径,服务器上文件的路径,举个栗子: string server_path = @...
  • Unity向Web服务器上传和下载图片

    千次阅读 2019-11-13 01:48:18
    如果本片有看不懂的请查看我上篇文章:Unity与Web服务器Post,Get 一、上传和下载图片 Unity的WWW不但能上传下载文本形式的数据,还可以上传下载图片,不过在传输过程中,图片的信息需要转为文本格式。 1.在Unity中...
  • 以Java web的方式下载服务器文件到浏览器 请求例子:localhost:8080/downExcel?excel=文件名.xls 示例代码: import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io....
  • 在官网http://httpd.apache.org/download.cgi下载的安装包,下载后经常不是 .msi 的安装向导文件,只是一个解压缩后的Apache24文件夹和...于是根据要求进行web 服务器的安装。 将解压后的Apache24文件夹放入 C:\ 目录
  • 客服端请求下载服务器B从服务器A中获得远程文件Url,服务器B通过服务器A获取的Url拿到文件后,在服务器B中处理,进行Zip打包,并在客户端中响应给客户端,完成Zip文件下载。二、思路代码 File file1 = new File(...
  • - 下载 1.Apache官网 http://www.apache.org/ 2.Download ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190115225328809.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_...
  • Nginx高性能Web服务器详解(完整版)pdf下载,深入了解Nginx
  • 记一次tornado框架python后端从web服务器下载文件过程 date 2020.7.21 Q:暂定的过程 用post方法,先前用的get,传body内文件名。 1、首先获取前端需要下载什么文件。 2、找到文件在服务器上面的路径。 3、将文件...
  • Apache Web服务器下载与安装

    千次阅读 2018-03-25 19:58:58
    通俗讲就是在一台计算机上,安装个服务器软件,这台计算机便可以称之为服务器服务器软件和计算机本身的操作系统是两码事,计算机自身的操作系统可以为linux、Unix、Windows或者MacOS,同时服务软件也可以是Apache...
  • java web使用流下载服务器上文件

    千次阅读 2018-07-03 14:17:55
    原因是因为response原因,一般请求浏览器是会处理服务器输出的response,例如生成png、文件下载等,然而ajax请求只是个“字符型”的请求,即请求的内容是以文本类型存放的。还有的原因是认为ajax方式请求的数据只能...
  • Web服务器-Apache下载与安装

    千次阅读 2018-03-19 21:40:01
     Apache服务器下载安装还是有些步骤的,请看我下面的引导图。   步骤  首先让我们进入Apache官网 http://www.apache.org/  找到首页最上方的Download. 这里我们选择它所建议个下载路径。 在项目...
  • 项目上的需求是集群均可生成PDF文件或是访问PDF文件,但是没有文件服务器,故做一个简易的文件服务器。解决方案:集群内的机器(客户端)生成PDF文件之后将PDF文件推给文件服务器,我们暂且称它为服务端;如果某个...
  • web服务器简介

    2017-09-20 17:39:13
    Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等...
  • Web服务器 之 lighttpd 轻量级WEB服务器

    千次阅读 2019-06-17 15:16:44
    作者:tonyvicky来自:LinuxSir.Org摘要:lighttpd是一个轻量级的WEB服务器软件,支持CGI FASTCGI等本文重点介绍lighttpd的CGI和FASTCGI模块的使用; 目录一、关于测试环境二、下载相关软件三、安装和配置1、安装...
  • web服务器下载.apk文件

    千次阅读 2014-10-13 09:27:47
    k .apk   application/vnd.android
  • 因项目需要,用S3C2440和GoAhead构建嵌入式WEB服务器。嵌入式设备实时存储数据到SD卡,需要远程下载SD卡存储的数据。编写网页放在嵌入式设备里,在浏览器输入嵌入式设备的IP可以访问网页。 之前考虑过用链接来下载...
  • ftp服务器在搭建windows系统下,web服务器在部署linux系统下,现java中使用ftpclient实现上传下载时,下载的文件内容是乱码; 之前web服务器也部署在windows系统下正常的,后来迁移到linux系统下出现乱码了啊,...
  • java web服务器下载图片资料

    千次阅读 2014-06-14 10:54:55
     // 从服务器获得一个输入流(本例是指从服务器获得一个image输入流)  public static InputStream getInputStream() {  InputStream inputStream = null;  HttpURLConnection httpURLConnection = null;...
  • 转载自风宇冲Unity3D教程学院往wamp路径下的www文件夹下拖入一张图片,这里使用的是cat.jpg, 输入http://localhost/cat.jpg,可以查看到图片如下后,新建unity工程,创建一个球体,创建一个任意名称材质,并赋予该...
  • android从java web客户端下载apk,MP3等文件,并显示下载进度条,下载后点击安装。
  • 默认情况下,使用IIS作为Web服务器的无法下载此文件,那么怎么才能让IIS支持.apk文件的下载呢?IIS服务器不能下载.apk文件的原因:iis的默认MIME类型中没有.apk文件,所以无法下载。IIS服务器不能下载.apk文件的解决...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,128
精华内容 7,251
关键字:

web下载服务器