-
java web 下载服务器上的EXCEL表格 适用于各个浏览器如IE、chrome
2018-06-29 10:51:011.首先要确保已存在的模板在服务器上,如图: 目的是从网页上下载这个已存在的excel表格模板 2.核心代码(此处有两种写法) a. 这种方式适用于各个浏览器,也解决了IE上不允许的情况,可能会出现安全级别问题...1.首先要确保已存在的模板在服务器上,如图:
目的是从网页上下载这个已存在的excel表格模板
2.核心代码(此处有两种写法)
a.
这种方式适用于各个浏览器,也解决了IE上不允许的情况,可能会出现安全级别问题提示文件存在危险。
b.
利用HttpHeader的方式,这种方式在IE上运行不了,可以读取到数据流存于头部信息,但是到不出来,在其他浏览器没有问题。主要是IE不支持二进制方式读取。
HttpServletRequest代表了客户端请求,客户端向服务器请求的所有数据都在HttpServletRequest里。
-
python -m http.server 搭建一个简易web下载服务器(可用于快速发送大文件)
2019-04-26 16:55:43在工作过程中需要经常发送安装包或文件给同事,亲测共享文件夹拷贝速度比较慢,然而局域网内使用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服务器文件
-
nginx配置的 web服务器 图片服务器 和文件下载服务器
2018-06-20 16:30:06配置下载文件的访问路径 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...- 配置html访问路径
- 配置图片访问路径
- 配置下载文件的访问路径
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服务器成为文件下载服务器
2019-03-22 09:34:00开启简单的web服务器成为文件下载服务器 1 进入需要共享的目录 2 运行命令 开启web服务 命令: python -m SimpleHTTPServer (python 2 版本使用此条命令) 3 python 3版本的命令 命令: python -m ... -
Web服务器
2015-07-02 09:21:06Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档。[1] 你可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。目前最主流的三个Web服务器是... -
Web客户端如何下载服务器文件!
2016-07-20 14:50:18有一个dll文件如何在实现客户端从服务器下载并保存在本地?求大神帮忙 -
Web应用服务器——Tomcat的介绍、下载安装、环境配置与使用
2019-08-09 23:35:18一、Web应用服务器 Web服务器是运行及发布Web应用的大容器,只有将开发的Web项目放到该容器中,才能使网络中的所有用户通过浏览器进行访问。常用的有BEA WebLogic服务器、IBM WebSphere应用服务器、Tomcat... -
web端下载服务器上的文件,js方法下载
2016-09-05 14:33:20js:文件下载: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的方式下载服务器文件到浏览器
2021-01-12 11:13:07以Java web的方式下载服务器文件到浏览器 请求例子:localhost:8080/downExcel?excel=文件名.xls 示例代码: import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.... -
Apache web 服务器的下载和安装
2016-01-18 17:05:28在官网http://httpd.apache.org/download.cgi下载的安装包,下载后经常不是 .msi 的安装向导文件,只是一个解压缩后的Apache24文件夹和...于是根据要求进行web 服务器的安装。 将解压后的Apache24文件夹放入 C:\ 目录 -
[Java Web]服务器获取远程文件并Zip打包给客户端下载
2017-05-18 10:23:23客服端请求下载,服务器B从服务器A中获得远程文件Url,服务器B通过服务器A获取的Url拿到文件后,在服务器B中处理,进行Zip打包,并在客户端中响应给客户端,完成Zip文件下载。二、思路代码 File file1 = new File(... -
web服务器Apache的下载安装
2019-01-15 23:35:32- 下载 1.Apache官网 http://www.apache.org/ 2.Download pdf下载
2018-09-21 07:39:17Nginx高性能Web服务器详解(完整版)pdf下载,深入了解Nginx -
记一次python后端从web服务器下载文件
2020-07-22 20:32:01记一次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:01Apache服务器的下载安装还是有些步骤的,请看我下面的引导图。 步骤 首先让我们进入Apache官网 http://www.apache.org/ 找到首页最上方的Download. 这里我们选择它所建议个下载路径。 在项目... -
NodeJs实现一个简易的WEB上传下载服务器
2018-04-13 15:45:44项目上的需求是集群均可生成PDF文件或是访问PDF文件,但是没有文件服务器,故做一个简易的文件服务器。解决方案:集群内的机器(客户端)生成PDF文件之后将PDF文件推给文件服务器,我们暂且称它为服务端;如果某个... -
web服务器简介
2017-09-20 17:39:13Apache是世界使用排名第一的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:47k .apk application/vnd.android -
远程下载嵌入式WEB服务器里的文件
2016-06-26 22:13:34因项目需要,用S3C2440和GoAhead构建嵌入式WEB服务器。嵌入式设备实时存储数据到SD卡,需要远程下载SD卡存储的数据。编写网页放在嵌入式设备里,在浏览器输入嵌入式设备的IP可以访问网页。 之前考虑过用链接来下载... -
ftp上传下载,ftp服务器在windows系统下,web服务器在linux系统下
2015-11-26 08:15:26ftp服务器在搭建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 Web 从服务器下载图片 读取视频文本
2018-04-13 16:38:19转载自风宇冲Unity3D教程学院往wamp路径下的www文件夹下拖入一张图片,这里使用的是cat.jpg, 输入http://localhost/cat.jpg,可以查看到图片如下后,新建unity工程,创建一个球体,创建一个任意名称材质,并赋予该... -
android从web服务器文件下载,进度条显示,下载完成后点击安装
2014-01-22 10:31:00android从java web客户端下载apk,MP3等文件,并显示下载进度条,下载后点击安装。 -
默认情况下,使用IIS作为Web服务器的无法下载apk文件
2014-03-01 21:08:16默认情况下,使用IIS作为Web服务器的无法下载此文件,那么怎么才能让IIS支持.apk文件的下载呢?IIS服务器不能下载.apk文件的原因:iis的默认MIME类型中没有.apk文件,所以无法下载。IIS服务器不能下载.apk文件的解决...