以Base64字符串形式上传文件——服务器端Java/Servlet接受请求数据中的字符串内容并转换成文件
简述
一、接受request请求,并处理(Java语言)
id = 00001
name = xiuli
<form><input type="hidden" name="id" value="00001"/><input type="text" name="name" value="xiuli"/>
</form>
对应的,传统的Java/Servlet是使用下面这种经典方式来接收“名值对”形式的请求参数的:
String id = request.getParameter(id);
String name = request.getParameter(name);
//...
这么一来,就意味着我们不能在客户端直接提交我们的xml数据或是json数据,而是必须为数据在增加一个“参数名”,确实很多此一举。
InputStream requestInputStream = request.getInputStream();
而通过下面这句代码能够获得整个流的长度:
int lengthOfContent = request.getContentLength();
有了长度,我们就很容易判断客户端是否有正确地提交了参数,如果长度是0的话,就说明一定是哪里出问题了。
/*** 将inputstream输入流转换成字符串* @Title: convertStreamToString* @author freezingxu* @date 2015-2-3 下午1:37:29* @param is:inputstream输入流* @param charSet:字符编码格式* @param lengthOfContent:输入流的长度* @return String * @throws Exception */
public static String convertStreamToString(InputStream is,String charSet,int lengthOfContent) throws Exception{ ByteArrayOutputStream outStream = new ByteArrayOutputStream(); byte[] data = new byte[lengthOfContent]; int count = -1; while((count = is.read(data,0,lengthOfContent)) != -1) outStream.write(data, 0, count); data = null; return new String(outStream.toByteArray(),charSet);
}
这么一来,我们就从request对象中取到了字符串形式的文件内容,接下来就是将字符串转换回文件的形式了。
二、字符串与文件互相转换
import sun.misc.BASE64Encoder;
public static boolean str2File(String fileStr,String filePath){//if (fileStr == null) //文件数据为空return false;try {//Base64解码byte[] b = Base64.decodeBase64(fileStr);for(int i=0;i<b.length;++i){if(b[i]<0){//调整异常数据b[i]+=256;}}//生成文件,并保存在服务器硬盘上OutputStream out = new FileOutputStream(filePath); out.write(b);out.flush();out.close();return true;} catch (Exception e) {e.printStackTrace();return false;}
}
public static String file2Str(String file){//将文件转化为字节数组字符串,并对其进行Base64编码处理InputStream in = null;byte[] data = null;//读取文件字节数组try{in = new FileInputStream(file); data = new byte[in.available()];in.read(data);in.close();} catch (IOException e) {e.printStackTrace();}return new String(Base64.encodeBase64(data));
}
好了,服务器端的处理就这么简单,到此结束。
以Base64字符串形式上传文件——服务器端Java/Servlet接受请求数据中的字符串内容并转换成文件相关推荐
- 上接稳扎稳打Silverlight(20) - 2.0通信之WebClient, 以字符串的形式上传/下载数据
2.以字符串的形式和流的形式上传数据 REST.cs(WCF创建的用于演示以字符串的形式和流的形式上传数据的REST服务) using System; using System.Linq; usi ...
- java0到9的字符怎么表示_java,_java 怎么生成一个0-9,a-z的一个44位字符串作为上传文件的名字,java - phpStudy...
java 怎么生成一个0-9,a-z的一个44位字符串作为上传文件的名字 找到一个时间MD5加密的 package org.blog.controller; import java.io.File; ...
- SMW0 HTML模版的形式上传文件 维护MIME类型
使用SMW0事务代码为webrfc上传模版, 若是已HTML模版形式上传的话,所上传的文件类型必须在MIMETYPES表中有对应的MIMETYPES,如果没有对应的,则应该维护进去,否则不允许以HTM ...
- 使用Ajax以一种形式上传数据和文件吗?
本文翻译自:Uploading both data and files in one form using Ajax? I'm using jQuery and Ajax for my forms t ...
- Java获取流形式上传下载文件
废话不多说,直接上代码: 1:pom中添加一下依赖: <!--druid数据源--><dependency><groupId>com.alibaba</gro ...
- 将base64编码图片上传到七牛云
将base64编码图片上传到七牛云 接口说明 FAQ >对象存储 >上传下载> 如何上传base64编码图片到七牛云 在七牛云FAQ上有一篇文章,讲解的接口的使用 https://d ...
- 文件上传漏洞实验-通过截取http请求绕过前端javascript验证进行文件上传
1.什么是文件上传漏洞 文件上传漏洞是指网络攻击者上传了一个可执行的文件到服务器并执行.这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等.这种攻击方式是最为直接和有效的,部分文件上传漏洞 ...
- jq 编码 php解码,jQuery编码转化base64通过AJAX上传
这次给大家带来jQuery编码转化base64通过AJAX上传,jQuery编码转化base64通过AJAX上传的注意事项有哪些,下面就是实战案例,一起来看一下. 本文实例讲述了jQuery实现文件编 ...
- 网页扫描图像并以pdf格式上传到服务器端
本文描述如何通过网页驱动扫描仪.高拍仪等图像扫描设备进行图像扫描,扫描结果经编辑修改后以pdf压缩格式上传到后台java程序中进行服务器端落盘保存. 图像扫描上传如文字描述顺序所介绍,先要驱动扫描设备 ...
最新文章
- 第八课.简单的图像分类(二)
- [Javascript]怎么样让公告不间断的滚动显示
- 东北师范大学计算机科学与技术学科评估,东北的大学最强十校,工科是真强,2所211大学无缘前十...
- MinHook - 最小化的 x86/x64 API 钩子库
- linux java mysql 备份 runtime_Linux下mysql定时备份脚本以及java实现
- ubuntu java 编译器_Ubuntu 16.04配置Java开发环境
- String、StringBuffer比较
- php domdocument getelementbyid,PHP DOMDocument- getElementByID添加Â代替空
- MYSQL 编码设置
- 直播丨国产最强音:HTAP融合型分布式数据库EsgynDB架构详解
- 单反相机的常用的几个参数之间的关系
- [leetcode]5325. 包含所有三种字符的子字符串数目
- eclipse中文版
- 舒尔特 Pro ,专业训练注意力专注力
- 修改el-input叉号的样式
- Android添加拍照功能,Android开发实现拍照功能的方法实例解析
- Linux之创建组名和删除组名
- 美团html页面代码,html+css+js制作美团官网
- centos7 安装docker-ce社区版 ,最新版本docker,docker阿里云加速
- 【区块链实战】什么是 P2P 网络,区块链和 P2P 网络有什么关系