java 图文上传问题(不用框架或者是组件)
期望实现的功能:jsp表单中一起传递图片和文字到servlet,servlet得到传递的值后保存到数据库中。
先帮忙看下思路,这样可以吗:
1、从jsp页面传递图文的二进制码给servlet。
2、在servlet中获得jsp中传递过来的值。
3、区分是图片的二进制码和文字的二进制码。
4、分别将二进制码转换为对应的格式(文字是字符,请问图片是什么尼?)。
5、将文字保存到数据库中,图片保存到硬盘中,把图片路径保存在数据库中。
目前实现的代码如下:
1、jsp代码:
<form action="homeS" method="post" enctype="multipart/form-data">
<textarea tabindex="1" name="Memo" rows="4" cols="70" class="qs" id="sq"></textarea>
<br/><br/>
<!-- 显示当前数输入的字符个数 -->
<label id="nub" >140</label>
<div class="hlinput"><input type="submit" class="formbutton" title="按Ctrl+Enter键发送消息" value=""/></div>
<div class="hlload"><input title="上传图片,最大2MB" class="sl-input-file" type="file" name="picture" id="upload-file"/></div>
</form>
2、servlet代码如下(homeS):
package com.d41741.servlet;
import java.io.FileOutputStream;
import java.io.FileReader;
import
java.io.IOException;
import java.io.PrintWriter;
import java.util.Hashtable;
import javax.resource.cci.Streamable;
import
javax.servlet.ServletException;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class homeS extends HttpServlet {
public homeS() {
super();
}
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
private String[] sourceFile = new String[255]; //源文件名
private String[] suffix = new String[255]; //文件后缀名
private String canSuffix = ".gif.jpg.jpeg.png.rar.txt"; //可上传的文件后缀名
private String objectPath = "F:\\'program files (x86)\\'MyEclipseWorkspace\\'FanFouImg/"; //目标文件目录
private String[] objectFileName = new String[255]; //目标文件名
private ServletInputStream sis = null; //输入流
private String[] description = new String[255]; //描述状态
private long size = 100 * 1024; //限制大小
private int count = 0; //已传输文件数目
private byte[] b = new byte[5102]; //字节流存放数组
private boolean successful = true;
private Hashtable fields = new Hashtable();
//设置上传文件的后缀名
public void setSuffix(String canSuffix) {
this.canSuffix = canSuffix;
}
//设置文件保存路径
public void setObjectPath(String objectPath) {
this.objectPath = objectPath;
}
//设置文件保存路径
public void setSize(long maxSize) {
this.size = maxSize;
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws
ServletException,
IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
// 获得homeLeft.jsp中,传递过来的信息
// 获得传递过来的值之后要将图片的流和文字的流区分开,并转换为字符和图片
try{
// 得到表单传递过来的值(二进制)
sis = request.getInputStream();
// 将得到的二进制转换为字符
int a = 0;