java实现利用HTTP基于servlet上传文件至服务器

java实现利用HTTP基于servlet上传文件至服务器
java实现利用HTTP基于servlet上传文件至服务器

Java客户端程序fileupload.java

import java.io.DataOutputStream;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStream;

import https://www.360docs.net/doc/c9102474.html,.HttpURLConnection;

import https://www.360docs.net/doc/c9102474.html,.URL;

public class fileupload {

public static String upload(String actionUrl,String FileName)throws IOException{

String BOUNDARY = java.util.UUID.randomUUID().toString();

String PREFFIX = "--", LINEND = "\r\n";

String MULTIPART_FROM_DATA = "multipart/form-data";

String CHARSET = "UTF-8";

URL uri = new URL(actionUrl);

HttpURLConnection conn = (HttpURLConnection) uri.openConnection();// 设置从主机读取数据超时

conn.setReadTimeout(10 * 1000);

conn.setDoInput(true);

conn.setDoOutput(true);

conn.setUseCaches(false);

conn.setRequestMethod("POST");

conn.setRequestProperty("connection", "keep-alive");

conn.setRequestProperty("Charset", "UTF-8");

conn.setRequestProperty("Content-Type", MULTIPART_FROM_DATA + ";boundary=" + BOUNDARY);

DataOutputStream outStream = new DataOutputStream(

conn.getOutputStream());

if (FileName != null) {

// 构建发送字符串数据

StringBuilder sb1 = new StringBuilder();

sb1.append(PREFFIX);

sb1.append(BOUNDARY);

sb1.append(LINEND);

sb1.append("Content-Disposition: form-data; name=\"file\"; filename=\""

+ FileName + "\"" + LINEND);

sb1.append("Content-Type: application/octet-stream;chartset="

+ CHARSET + LINEND);

sb1.append(LINEND);

// 写入到输出流中

outStream.write(sb1.toString().getBytes());

// 将文件读入输入流中

InputStream is = new FileInputStream(FileName);

byte[] buffer = new byte[1024];

int len = 0;

// 写入输出流

while ((len = is.read(buffer)) != -1) {

outStream.write(buffer, 0, len);

}

is.close();

// 添加换行标志

outStream.write(LINEND.getBytes());

}

// 请求结束标志

byte[] end_data = (PREFFIX + BOUNDARY + PREFFIX + LINEND).getBytes();

outStream.write(end_data);

// 刷新发送数据

outStream.flush();

// 得到响应码

int res = conn.getResponseCode();

//System.out.println(res);

InputStream in = null;

// 上传成功返回200

if (res == 200) {

in = conn.getInputStream();

int ch;

StringBuilder sb2 = new StringBuilder();

// 保存数据

while ((ch = in.read()) != -1) {

sb2.append((char) ch);

}

}

// 如果数据不为空,则以字符串方式返回数据,否则返回null

return in == null ? null : in.toString();

}

}

在web.xml中配置Servlet

MyServlet

umb.load.Fileupload

MyServlet

/upload/*

服务器端程序Fileupload.java

package umb.load;

import java.io.File;

import java.io.IOException;

import java.io.PrintWriter;

import java.util.Iterator;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import https://www.360docs.net/doc/c9102474.html,mons.fileupload.FileItem;

import https://www.360docs.net/doc/c9102474.html,mons.fileupload.FileItemFactory;

import https://www.360docs.net/doc/c9102474.html,mons.fileupload.disk.DiskFileItemFactory;

import https://www.360docs.net/doc/c9102474.html,mons.fileupload.servlet.ServletFileUpload;

@SuppressWarnings("serial")

public class Fileupload extends HttpServlet{

public void doPost(HttpServletRequest request,HttpServletResponse response)throws IOException, ServletException{

boolean isMultipart = ServletFileUpload.isMultipartContent(request);

if (isMultipart) {

FileItemFactory factory = new DiskFileItemFactory();

ServletFileUpload upload = new ServletFileUpload(factory);

@SuppressWarnings("rawtypes")

Iterator items;

try {

items = upload.parseRequest(request).iterator();

while (items.hasNext()) {

FileItem item = (FileItem) items.next();

if (!item.isFormField()) {

//取出上传文件的文件名称

String name = item.getName();

//System.out.println(name);

String fileName =

name.substring(https://www.360docs.net/doc/c9102474.html,stIndexOf('\\')+1,name.length());

//System.out.println(fileName);

String path =

request.getRealPath("upload")+File.separatorChar+fileName;

//上传文件

File uploadedFile = new File(path);

item.write(uploadedFile);

response.setContentType("text/html;charset=gb2312");

PrintWriter out = response.getWriter();

//System.out.println(path);

out.print("上传的文件为:"+name+"
");

out.print("保存的地址为:"+path+"");

}

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

eoLinker-API_Shop_猫咪大全_API接口_Java调用示例代码

eoLinker-API Shop 猫咪大全 Java调用示例代码 猫咪大全 可查询猫咪相关信息,包括品种介绍、产地、性格、寿命、价格等信息,带图片。 该产品拥有以下APIs: 1.关键字获取猫类 2.获取猫类列表 3.获取猫类详细信息 注意,该示例代码仅适用于https://www.360docs.net/doc/c9102474.html,网站下API使用该产品前,您需要通过https://https://www.360docs.net/doc/c9102474.html,/#/api/detail/?productID=193申请API服务 1.关键字获取猫类 package net.apishop.www.controller; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; import https://www.360docs.net/doc/c9102474.html,.HttpURLConnection; import https://www.360docs.net/doc/c9102474.html,.MalformedURLException; import https://www.360docs.net/doc/c9102474.html,.URL; import https://www.360docs.net/doc/c9102474.html,.URLEncoder; import java.util.HashMap; import java.util.Map; import com.alibaba.fastjson.JSONObject; /** * httpUrlConnection访问远程接口工具 */ public class Api { /** * 方法体说明:向远程接口发起请求,返回字节流类型结果 * param url 接口地址 * param requestMethod 请求方式 * param params 传递参数重点:参数值需要用Base64进行转码 * return InputStream 返回结果 */ public static InputStream httpRequestToStream(String url, String re questMethod, Map params) {

内部文件传输管理方案

内部文件传输管理方案 一:目前情况: 目前内部没有文件服务器,工作人员资料均存储在本地电脑上,无法实现重要资料的备份及资料的共享。重要数据的保存存在比较大的隐患。一但系统瘫痪或病毒爆发,极有可能使重要数据丢失而造成重大的损失。同时,在对资料的共享及管理方面造成难以管理的情况。无法有效的实现资料的共享使用及数据的安全。基于以上种种情况,建议架设内部文件服务器。 文件服务器的作用:一,数据备份,确保数据安全。造成数据掉失的主要有以下原因:1,物理故障2,人为误操3,软件问题4,病毒木马及黑客5,机器掉失及被盗6,工作人员恶意破坏7,自然灭害。由此可见数据时刻存在风险,也可以明白数据备份的重要性。二,数据实时共享,提高工作人员工作效率。在企业里,数据共享就如人体的血液,数据能否迅速共享有着重要。三,迅速从事故中恢复正常状态。由于数据掉失或系统瘫痪等原因至使破坏工作人员正常工作的环境,在这情况下迅速恢复工作人员正常工作环境尽量缩短恢复正常状态的时间显得特别重要。例如:工作人员系统瘫痪,重做系统及安装应用程序等会化费大量的时间,但利用服务器及软件的配合可以在十几分钟内让工作人员的恢复到正常环境,而不影响工作。四,减少U盘使用,从源头防止病毒交叉感染。建立文件服务器后,可以改变以往通过U盘传输交换文件的方式,从而避免病毒交叉感染的

风险。 二:软硬件需求: 1.由于服务器是运行关键应用及确保数据安全的设备,所以服务器的稳定,性能,及服务特别重要。服务器必须能够7*24不间断服务,服务器要有足够的性能去运行应用以及服务器必须在故障时能迅速恢复过来。它采用专利的三大内存保护技术、RAID 技术、热插拔技术、冗余电源、冗余风扇等方法使服务器具备容错能力、安全保护能力。2 软件需求:windows server 2003或Windows server2008 一套。 三:配置规划: 1.硬件方面: 服务器 交换机 中转机 终端设备(该项建议删除,如果需要增加计算机则保留) 2、从硬件上保证系统的可靠性和稳定性,当其中一颗硬盘物理上出现故障,系统将不会受到影响,仍然可以正常提供服务。只需后续更换故障硬盘。(该项也可以删除,购置新服务器后供应商在安装的时候你提出配raid5 或其他阵列方式即可) 服务器硬盘共分为C:D:E:F:四个逻辑分区。 C:区为系统区,用于安装服务器系统。 D:区为软件区存放系统所用软件。

Java多方式实现文件上传

在Struts 2中实现文件上传 前一阵子有些朋友在电子邮件中问关于Struts 2实现文件上传的问题,所以今天我们就来讨论一下这个问题。 实现原理 Struts 2是通过Commons FileUpload文件上传。Commons FileUpload通过将HTTP的数据保存到临时文件夹,然后Struts使用fileUpload拦截器将文件绑定到Action的实例中。从而我们就能够以本地文件方式的操作浏览器上传的文件。 具体实现 前段时间Apache发布了Struts 2.0.6 GA,所以本文的实现是以该版本的Struts 作为框架的。以下是例子所依赖类包的列表: 清单1 依赖类包的列表 首先,创建文件上传页面FileUpload.jsp,内容如下: <% @ page language = " java " contentType = " text/html; charset=utf-8 " pageEncodi ng = " utf-8 " %> <% @ taglib prefix = " s " uri = " /struts-tags " %> Struts 2 File Upload

基于Java Web的猜歌游戏设计与实现(含源文件)

本科毕业论文(设计)题目:基于Java Web的猜歌游戏设计与实现 姓名: 学号: 专业:计算机科学与技术 院系:信息工程学院 指导老师: 职称学位:讲师/硕士 完成时间:2015年5月 教务处制

安徽新华学院本科毕业论文(设计)独创承诺书 本人按照毕业论文(设计)进度计划积极开展实验(调查)研究活动,实事求是地做好实验(调查)记录,所呈交的毕业论文(设计)是我个人在导师指导下进行的研究工作及取得的研究成果。据我所知,除文中特别加以标注引用参考文献资料外,论文(设计)中所有数据均为自己研究成果,不包含其他人已经发表或撰写过的研究成果。与我一同工作的同志对本研究所做的工作已在论文中作了明确说明并表示谢意。 毕业论文(设计)作者签名: 日期:

基于Java Web的猜歌游戏设计与实现 摘要 随着社会的不断发展,越来越多的人面临的压力越来越大,人们渴望随时随地都能放松自我。然而游戏正成为人们释放压力,放松自己最行之有效的娱乐方式之一。而基于Java Web的猜歌游戏以其界面美观,操作简单,对硬件要求低等优点将会备受大家的青睐。系统通过数据库对用户基本信息和歌曲信息进行统一管理,借助经典的框架Servlet对数据进行处理,又选择了前端一些功能强大的插件对数据进行展示,将猜歌与游戏很好的结合起来,意在给用户创造了一个良好的交互平台。为了更好地管理和维护本系统,系统还专门设置了管理员角色和用户角色。管理员主要的任务在于对用户上传的歌曲进行审核。而用户则是享受猜歌的乐趣,使得猜歌游戏能够稳定、高效地运行。 为了增强游戏的趣味性,告别了原始猜歌游戏的不灵活性。该系统通过用户上传歌曲功能时时更新数据库,使得歌曲不断地更新,玩家与玩家之间可以互相分享歌曲。随着网络的发展,该游戏还存在大量地后续研究工作。 关键词:猜歌;游戏;数据;Servlet框架;Java Web

WebApi系列~通过HttpClient来调用WebApi接口

回到目录 HttpClient是一个被封装好的类,主要用于Http的通讯,它在.net,java,oc中都有被实现,当然,我只会.net,所以,只讲.net中的HttpClient去调用Web Api的方法,基于api项目的特殊性,它需要有一个完全安全的环境,所以,你的api控制器看起来有点特别,只有5个方法,而且都是标准的http方法,我觉得这种设计很不错,很清晰,而且为了实现安全性,它不支持使用传统的表单数据,取而代之的是FromBody参数,它指拿HttpRequestMessage里参数,而不是所有的Request数据,这是基于安全方面的考虑。一Api接口参数的标准性 Get方式,可以有多个重载,有多个参数 POST方式,只能有一个参数,并且用[FromBody]约束,如果有多个参数,需要以对象的方式进行传递 Put方式,只能有两个参数,其中一个是通过Request.QueryString方式进行传递的,作为要更新对象的主键,别一个是[FromBody]字段,也是一个字段,如果多个字段需要把它封装成对象 标准接口如图 二调用方,参数的标准性 在客户端进行接口调用时,我们以网页端为例,看一下网页端进行ajax跨域请求的代码

Get方式 $.ajax({ url: "http://localhost:52824/api/register", type: "GET", success: function (data) { console.log("json:" + data); } }); Post方式 $.ajax({ url: "http://localhost:52824/api/register", type: "POST", data: { '': '1' },//这里键名称必须为空,多个参数请传对象,api端参数名必须为value success: function (data) { console.log("post:" + data); } }); 三在控制台中实现Get方式获取接口数据(只有异步实现) ///

/// HttpClient实现Get请求 /// static async void dooGet() { string url = "http://localhost:52824/api/register?id=1&leval=5"; //创建HttpClient(注意传入HttpClientHandler) var handler = new HttpClientHandler() { AutomaticDecompression = DecompressionMethods.GZip }; using (var http = new HttpClient(handler)) { //await异步等待回应 var response = await http.GetAsync(url);

文件安全共享解决方案

文件安全共享解决方案 成本最低的文件安全存储、共享和数据采集安全采集解决方案 ●需求分析 传统的文件存储、共享和数据采集和报送基本都是通过:FTP 服务器、安全U盘和云存储服务三种主要方式。三种方式都存在的各种不同的安全隐患: 1)FTP 服务器,明文传输,文件数据不可控易泄露,同时不具备文件共享特征。 2)安全U盘,这是客户端方式,文件数据可控性差,无法共享文档,易造成病毒在内网传播,不易管理。 3)云存储服务,明文存储和传输,而且在文件控制方面也存在安全漏洞。 ●解决方案 通过部署一台TrustMore安全网关及一台数据存储服务器,即可完成数据安全报送、文件安全共享、数据安全采集及文件安全存储。 ●方案特点 1) 符合国家和行业安全标准 支持SM1、SM2、SM3、SM4国密码算法,符合国家密码管理局制订的《SSLVPN技术规范》,符合公安《信息安全技术访问控制产品技术规范》,符合公安《身份安全鉴别类信息安全产品技术规范》,符合公安部可信边界接入相关技术规范,符合公安部集中认证网关相关技术规范,符合国家保密局安全中间件相关技术规范,符合国家等级保护要求。 2) 充分利用现有信息化资源

实现协议转换,所有不安全的存储协议转换为安全的HTTPS协议,可将不安全的FTP 服务轻松转换为安全共享存储,化腐朽为神奇。 3)支持多种双因子身份认证方式,包括USBKey数字证书方式认证 4)支持多种移动终端,包括:Android、iPhone、iPad、WP8、Windows8等移动终端操作系统。 5)充分利用现有信息化资源,不用重新投资建设新的存储平台用户轻松享有云端文件安全共享,可以设置文件共享的下载次数、时间和在线操作权限。 6)独创的数据存储动态加密技术,用户自主可控数据加密密钥支持。 7)上传下载的双向断点续传。 8)支持文件访问、查看和拷贝的文件操作行为安全审计,便于文档安全问题的事后追溯。 ●主要功能 1)安全共享 ?公开分享:允许任何人下载 ?私密分享:只允许指定的人员下载 ?分享时限:只允许特定的时间内进行下载 ?分享权限:允许下载或者在线查看 2)安全认证 ?使用数字证书认证 ?绑定多个帐号,单点登录 3)文件分类 ?我的文档,按照文档、图片、视频、程序进行分类 ?我的共享,允许取消共享

Java实现视频网站的视频上传及视频播放功能

视频网站中提供的在线视频播放功能,播放的都是FLV格式的文件,它是Flash动画文件,可通过Flash 制作的播放器来播放该文件.项目中用制作的播放器. 多媒体视频处理工具FFmpeg有非常强大的功能包括视频采集功能、视频格式转换、视频抓图、给视频加水印等。?? ffmpeg视频采集功能非常强大,不仅可以采集视频采集卡或USB摄像头的图像,还可以进行屏幕录制,同时还支持以RTP方式将视频流传送给支持RTSP的流媒体服务器,支持直播应用。 1.能支持的格式 ffmpeg能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等) 2.不能支持的格式 对ffmpeg无法解析的文件格式(wmv9,rm,rmvb等),可以先用别的工具(mencoder)转换为avi(ffmpeg 能解析的)格式. 实例是将上传视频转码为flv格式,该格式ffmpeg支持,所以我们实例中需要ffmpeg视频处理工具. 数据库 实例所需要的数据库脚本 drop database if exists db_mediaplayer;create database db_mediaplayer;use db_mediaplayer; create table tb_media( id int not null primary key auto_increment comment '主键' , title varchar(50) not null comment '视频名称' , src varchar(200) not null comment '视频存放地址' , picture varchar(200) not null comment '视频截图' , descript varchar(400) comment '视频描述' , uptime varchar(40) comment '上传时间' );

Struts1.2实现单文件上传讲解

Struts1 文件上传 在Web程序中的上传文件的功能一般会使用标签在客户端显示输入要上传的文件名的用户接口。如果读者使用过JSP/Servlet来处理客户端上传的文件就会知道,实现这个功能并不是很容易。而在Struts中为我们提供了一种机制,可以非常方便地将客户端上传的文件保存在服务端。 在Struts Html标签库中提供了一个标签,可以和FormFile类型的属性一起使用。通过这个属性返回的FormFile对象,就可以很方便地获得上传文件的InputStream对象,并做进一步地处理。 在Struts中,一个FormFile对象代表一个上传的文件。FormFile实际上是一个接口,我们可以在org.apache.struts.upload包中找到这个接口。FormFile接口有如下五个常用的方法: 1. getInputStream()方法 这个方法用于获得上传文件的java.io.InputStream对象,我们可以从这个InputStream对象中读取上传文件的数据,并将其写到服务端指定的路径下。 2. getFileData()方法 这个方法用于将上传文件的整个内容放到一个byte类型的数组中,如果上传文件的尺寸比较小的话,使用这个方法可以很方便地将上传文件保存到在服务端的指定路径中。 3. getFileName()方法 这个方法用于获得上传文件的文件名(不包括文件在客户机的路径部分)。 4. getFileSize()方法 这个方法用于获得上传文件的字节数。 5. destroy()方法 用于销毁所有和当前上传文件相关的资源。 下面的例子演示了如何使用标签和FormFile对象来上传单个文件。实现这个例子需要如下六步: 【第1步】建立上传文件的JSP页面 在目录中建立一个uploadFile.jsp文件,代码如下:

应用Servlet实现购物车

应用Servlet实现购物车 具体实现过程 1、创建封装商品信息的值JavaBean---------GoodsSingle package com.yxq.valuebean; public class GoodsSingle { private String name; //保存商品名称 private float price; //保存商品价格 private int num; //保存商品购买数量public String getName() { return name; } public void setName(String name) { https://www.360docs.net/doc/c9102474.html, = name; } public int getNum() { return num; } public void setNum(int num) { this.num = num; }

public float getPrice() { return price; } public void setPrice(float price) { this.price = price; } } 2、创建工具JavaBean-------- MyTools 实现字符型数据转 换为整型及乱码处理 package com.yxq.toolbean; import java.io.UnsupportedEncodingException; public class MyTools { public static int strToint(String str){ //将String型数据转换为int型数据的方法 if(str==null||str.equals("")) str="0"; int i=0; try{ i=Integer.parseInt(str); //把str 转换成

java发送http的get、post请求

package wzh.Http; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import https://www.360docs.net/doc/c9102474.html,.URL; import https://www.360docs.net/doc/c9102474.html,.URLConnection; import java.util.List; import java.util.Map; public class HttpRequest { /** * 向指定URL发送GET方法的请求 * * @param url * 发送请求的URL * @param param * 请求参数,请求参数应该是name1=value1&name2=value2 的形式。 * @return URL 所代表远程资源的响应结果 */ public static String sendGet(String url, String param) { String result = ""; BufferedReader in = null; try { String urlNameString = url + "?" + param; URL realUrl = new URL(urlNameString); // 打开和URL之间的连接 URLConnection connection = realUrl.openConnection(); // 设置通用的请求属性 connection.setRequestProperty("accept", "*/*"); connection.setRequestProperty("connection", "Keep-Alive"); connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); // 建立实际的连接 connection.connect(); // 获取所有响应头字段 Map> map = connection.getHeaderFields(); // 遍历所有的响应头字段 for (String key : map.keySet()) { System.out.println(key + "--->" + map.get(key)); } // 定义BufferedReader输入流来读取URL的响应 in = new BufferedReader(new InputStreamReader(

Web上传大文件的三种解决方案

Web上传文件的三种解决方案 王建斌赵靓 (肇庆学院,广东肇庆526061) (肇庆医学高等专科学校,广东肇庆526020) 摘要介绍了Web上传文件的三种客户端解决方案:HTML表单、RIA以及插件,它们都可以很好地实现文件上传任务,当然这还需要服务端代码的配合,其中RIA选择了Flex,插件选择了ActiveX作为代表来介绍。此外,重点在于构建和分析HTTP协议数据来提供大文件上传的实时上传进度显示。 关键词Web;HTTP;Flex;ActiveX;文件上传 1引言 如果是对于几KB至几MB字节的文件上传,确实没有必要写一篇文章去讨论,但是如果需要上传大文件,例如教师向网络学习系统上传软件、视频等几百MB甚至上GB大小的文件时,平常所用的方法要么失效,要么不能实时反映上传进度。 文中采用的方法对于小文件和大文件上传一视同仁,并且对可能采用的三种解决方案进行展示和总结。那么,可能采用的三种解决方案如下: (1)HTML Form(可含Javascript、Ajax)。 (2)RIA技术(Flex、Silverlight、JavaFX等)。 (3)插件技术(Acticx、Applet等)。 图1Web服务存储上传文件的方式 文件上传到服务器,一般可以存放于本地文件系统、数据库和远程FTP等。图1为文件上传到Web服务器的存放方式示意图。 浏览器/服务器(B/S)模式,其实是一种特殊形式的C/S,浏览器作为客户端,HTTP作为通信协议。面对简单的文件上传情况,客户端代码只需HTML表单,服务器编写简单的动态页面和处理代码。而对于复杂的大文件带进度显示的上传,则一般要深入了解HTTP 1.1协议[1]以及各类技术如何处理HTTP请求。文中所讲如图2所示的三种解决方案,主要指的是浏览器端的代码,而服务端不限制使用何种动态页面技术或代码模块。

Java文件上传类FileUploadUtil.java代码+注释

? 一个通用的Java文件上传类,支持上传图片,支持生成缩略图,设置最大上传文件字节数,不设置时默认10M,可接收来自表单的数据,当有多个文件域时, 只上传有文件的,忽略其他不是文件域的所有表单信息,支持用户对上传文件大小, 字节进行设置,本上传类可过滤掉以下文件类型:".exe", ".com", ".cgi", ".asp", ".php", ".jsp"等,你可自已添加过滤的文件后缀,上传文件时如果没有上传目录,则自动创建它。。。 ? package com.gootrip.util; import java.io.File; import java.util.*; import https://www.360docs.net/doc/c9102474.html,mons.fileupload.*; import javax.servlet.http.HttpServletRequest; import java.util.regex.Pattern; import java.io.IOException; import https://www.360docs.net/doc/c9102474.html,mons.fileupload.servlet.ServletFileUpload; import https://www.360docs.net/doc/c9102474.html,mons.fileupload.disk.DiskFileItemFactory; import java.util.regex.Matcher; /** * TODO 要更改此生成的类型注释的模板,请转至 * 窗口-首选项- Java -代码样式-代码模板 */ public class FileUploadUtil {

//当上传文件超过限制时设定的临时文件位置,注意是绝对路径 private String tempPath = null; //文件上传目标目录,注意是绝对路径 private String dstPath = null; //新文件名称,不设置时默认为原文件名 private String newFileName = null; //获取的上传请求 private HttpServletRequest fileuploadReq = null; //设置最多只允许在内存中存储的数据,单位:字节,这个参数不要设置太大 private int sizeThreshold = 4096; //设置允许用户上传文件大小,单位:字节 //共10M private long sizeMax = 10485760; //图片文件序号 private int picSeqNo = 1; private boolean isSmallPic = false; public FileUploadUtil(){ } public FileUploadUtil(String tempPath, String destinationPath){ this.tempPath = tempPath; this.dstPath = destinationPath; }

用 Servlet 进行文件上传的原理和实现

用Servlet 进行文件上传的原理和实现 Servlet 是用 Java 编写的、协议和平台都独立的服务器端组件,使用请求/响应的模式,提供了一个基于 Java 的服务器解决方案。使用 Servlet 可以方便地处理在 HTML 页面表单中提交的数据,但 Servlet 的 API 没有提供对以 mutilpart/form-data 形式编码的表单进行解码的支持,因而对日常应用中经常涉及到到文件上传等事务无能为力。 如何用 Servlet 进行文件的上传,必须编程实现。 一、基本原理 通过 HTML 上载文件的基本流程如下图所示。 浏览器端提供了供用户选择提交内容的界面(通常是一个表单),在用户提交请求后,将文件数据和其他表单信息编码并上传至服务器端,服务器端(通常是一个 cgi 程序)将上传的内容进行解码了,提取出 HTML 表单中的信息,将文件数据存入磁盘或数据库。 二、各过程详解 A)填写表单并提交

通过表单提交数据的方法有两种,一种是 GET 方法,另一种是 POST 方法,前者通常用于提交少量的数据,而在上传文件或大量数据时,应该选用 POST 方法。在 HTML 代码中,在

标签中添加以下代码可以页面上显示一个选择文件的控件。 在页面中显示如下(可能随浏览器不同而不同) 可以直接在文本框中输入文件名,也可以点击按钮后弹出供用户选择文件的对话框。 B)浏览器编码 在向服务器端提交请求时,浏览器需要将大量的数据一同提交给 Server 端,而提交前,浏览器需要按照 Server 端可以识别的方式进行编码,对于普通的表单数据,这种编码方式很简单,编码后的结果通常是 field1=value2&field2=value2&…的形式,如name=aaaa&Submit=Submit。 这种编码的具体规则可以在 rfc2231 里查到,通常使用的表单也是采用这种方式编码的,Servlet 的 API 提供了对这种编码方式解码的支持,只需要调用 ServletRequest 类中的方法就可以得到用户表单中的字段和数据。 这种编码方式( application/x-www-form-urlencoded )虽然简单,但对于传输大块的二进制数据显得力不从心,对于传输这类数据,浏览器采用了另一种编码方式,即 "multipart/form-data"的编码方式,采用这种方式,浏览器可以很容易的表单内的数据和文件一起。这种编码方式先定义好一个不可能在数据中出现的字符串作为分界符,然后用它将各个数据段分开,而对于每个数据段都对应着 HTML 页面表单中的一个 Input 区,包括一个 content-disposition 属性,说明了这个数据段的一些信息,如果这个数据段的内容是一个文件,还会有Content-Type 属性,然后就是数据本身。

基于JAVA的新闻数据接口调用代码实例

基于JA V A的新闻数据接口调用代码实例 代码描述:基于JA V A的新闻数据接口调用代码实例 代码平台:聚合数据 import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import https://www.360docs.net/doc/c9102474.html,.HttpURLConnection; import https://www.360docs.net/doc/c9102474.html,.URL; import https://www.360docs.net/doc/c9102474.html,.URLEncoder; import java.util.HashMap; import java.util.Map; import net.sf.json.JSONObject; /** *新闻调用示例代码-聚合数据 *在线接口文档:https://www.360docs.net/doc/c9102474.html,/docs/138 **/ public class JuheDemo { public static final String DEF_CHATSET = "UTF-8"; public static final int DEF_CONN_TIMEOUT = 30000; public static final int DEF_READ_TIMEOUT = 30000; public static String userAgent = "Mozilla/5.0 (Windows NT 6.1) Appl eWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36"; //配置您申请的KEY public static final String APPKEY ="*************************"; //1.新闻检索 public static void getRequest1(){ String result =null; String url ="https://www.360docs.net/doc/c9102474.html,/onebox/news/query";//请求接口地址 Map params = new HashMap();//请求参数 params.put("q","");//需要检索的关键字,请UTF8 URLENCODE params.put("key",APPKEY);//应用APPKEY(应用详细页查询)

异网数据安全传输解决方案原理概述

异网数据安全传输解决方案原理概述 一方案概述 随着信息技术发展,信息共享已成为网络的主旋律。但在不同网络环境中,高密级网络为了保证数据安全,防止数据外流,采用了物理隔离的措施,不能利用低密级网络的数据,浪费了宝贵的信息资源。 针对异网数据的安全传输设计出一套完整解决方案,使低密级网络数据可流向高密级网络,同时高密级网络数据不会外流至低密级网络。整个系统由硬件单元和软件单元组成。硬件单元以自主研制的单向传输设备为基础,研发出单向传输协议;软件部分使用基于摘要和属性的专用文件格式,采用软件防毒墙和文件签名的技术,保证文件传输的安全性和完整性。 为减少单向传输的环节,方案提供了文件双向传输子系统,将局域网内的文件、数据等统一汇集至一台终端,通过此终端进行文件单向传输,进而将数据单向传输统一管理,精确记录每个文件的传输历史,实现传输的可追溯。文件双向传输子系统支持断电断网保护以及断点续传。 系统架构>> 系统采用组件式的设计理念,将系统分为采集代理系统,数采传输软件,安全评估和转换管理软件;核心为文件传输平台和数据库同步平

台。依托两个基础平台完成不同格式数据(表单,数据库以及文件)的安全稳定传输。 系统架构图功能界面>>

二优势 1.单向安全传输,保障信息安全 构建不同网络数据传输平台,打通不同网络间信息传输通道,实现数据的单向共享,传输过程中经过杀毒和安全处理,保证文件安全完整传输; 2.降低沟通成本,提高工作效率 通过数据库同步平台,将不同的数据库资源统一汇总至一台服务器内,可实现数据中心数据资源数据的构建。 3.在线数据填报,灵活高效办公 智能表单填报,将格式化数据保存至系统,传输至异网系统,实现跨网数据上报。 4.跨网邮件发送,扩充沟通渠道 基于文件传输,可灵活扩充出邮件单向中继功能,实现不同网络间邮件发送。 5.数据同网汇集,统管核心数据 提供双向文件传输,可以将不同终端的文件汇总至一台终端内,可用于分布式系统中分支结点和中心结点的文件同步。 三应用场景 1、单向数据传输,数据单向由外网向内网流入,同时外网数据不会流出。

上传文件详细设计

文件上传详细设计 1.用户界面 2.前端控制 ●声明控制器:uploadCtrl 2.1.上传文件 ●功能:实现本地文件保存到服务器中。 ●参数:FormData()对象 ●返回值:??? ●实现://在【uploadCtrl】作用域内声明保存文档属性的方法。 1.声明上传文件对象file 1.1声明文件信息对象file message 2.声明文件上传事件btn_upload_onclick() //1.获取文件对象 //1.调用数据接口【/ZenithThinkTank-1.0.0/servlet/FileCommand】,post提交文件对象file,获取{“file”:{"filetype":"docx","filename":”知识管理概要设计”,"files ize":"500","filepath":“/filepath"}}JSON格式 //2.将结果赋值到【uploadCtrl】作用域内的【file message】对象。

2.2.获取文档分类 ●功能:实现获取文档分类树的展示和选择。 ●参数:parentid ●返回值:??? ●实现://在【uploadCtrl】作用域内声明获取文档分类的方法。 1.声明kind对象 2.声明自动获取分类 2.1声明自动获取分类方法 $scope.auto_kind() 2.2声明保存文件信息 //1.调用数据接口【/ZenithThinkTank-1.0.0/thinktank/api/1.0/kno/i】,p ost提交filemessage参数,获得Json字符串{“msg”:”success”,”state”:” 1”} 2.3分类加载数据方法 //1.调用数据接口【/ZenithThinkTank-1.0.0/thinktank/api/1.0/kind/s/'p arentid】,post提交参数,获{“kind”:{“kindn ame”:”””案件库”, “k indId”:”-1”}} JSON格式 2.4.选择分类 //2. 将结果赋值到【uploadCtrl】作用域内的【kindlist】对象。

Java实现发送Http请求

Java实现发送Http请求 JDK中提供了一些对无状态协议请求(HTTP)的支持: 首先让我们先构建一个请求类(HttpRequester)。 该类封装了JAVA实现简单请求的代码,如下: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import https://www.360docs.net/doc/c9102474.html,.HttpURLConnection; import https://www.360docs.net/doc/c9102474.html,.URL; import java.nio.charset.Charset; import java.util.Map; import java.util.Vector; /** * HTTP请求对象 * * @author YYmmiinngg */ public class HttpRequester { private String defaultContentEncoding; public HttpRequester() { this.defaultContentEncoding = Charset.defaultCharset().name(); }

/** * 发送GET请求 * * @param urlString * URL地址 * @return 响应对象 * @throws IOException */ public HttpRespons sendGet(String urlString) throws IOException { return this.send(urlString, "GET", null, null); } /** * 发送GET请求 * * @param urlString * URL地址 * @param params * 参数集合 * @return 响应对象 * @throws IOException

java实现文件上传、下载

tomcat上传文件下载文件 首先介绍一下我们需要的环境:我用的是myeclipse8.5的java开发环境,tomcat是用的apache-tomcat-6.0.26这个版本。首先先需要准备一下使用到的 jar包 这些jar包是struts2的jar包。这些jar包是都是用于上传文件的。 注意:这里的jar包版本必须是对应的,如不是可能会tomcat下报错。所以大家最好注意一下啊。最好是用这套jar包。我将会在csdn上将项目jar包发上去。 Jar下载地址(0 分):https://www.360docs.net/doc/c9102474.html,/detail/woaixinxin123/4193113 源代码下载(10分): https://www.360docs.net/doc/c9102474.html,/detail/woaixinxin123/4193134 开始搭建我们的项目。创建web项目名字为File。 第一步:搭建struts2框架。 1、到jar包。

2、编辑web.xml struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepa reAndExecuteFilter struts2 /* index.jsp

Java文件上传下载

主要方法介绍 上传 // 新建一个SmartUpload对象 SmartUpload su = new SmartUpload(); // 上传初始化 su.initialize(pageContext); // 限制每个上传文件的最大长度。 su.setMaxFileSize(10000); // 限制总上传数据的长度。 su.setTotalMaxFileSize(20000); // 设定允许上传的文件(通过扩展名限制),仅允许doc,txt文件。 su.setAllowedFilesList("doc,txt"); // 设定禁止上传的文件(通过扩展名限制),禁止上传带有exe,bat, //jsp,htm,html扩展名的文件和没有扩展名的文件。 su.setDeniedFilesList("exe,bat,jsp,htm,html,,"); // 上传文件 su.upload(); // 将上传文件全部保存到指定目录 int count = su.save("/upload"); 下载 // 新建一个SmartUpload对象 SmartUpload su = new SmartUpload(); // 初始化 su.initialize(pageContext); // 设定contentDisposition为null以禁止浏览器自动打开文件, //保证点击链接后是下载文件。若不设定,则下载的文件扩展名为 //doc时,浏览器将自动用word打开它。扩展名为pdf时, //浏览器将用acrobat打开。 su.setContentDisposition(null); // 下载文件 su.downloadFile("/upload/test.doc"); ***************************************************************************************************** ***************** 应用实例: 用户只能上传图片格式的文件实例

相关文档
最新文档