可以手写IO读写(有点麻烦)。
怕麻烦的话使用FileUpload组件 在servlet里doPost嵌入一下代码
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
response.setContentType("text/htmlcharset=gb2312")
PrintWriter out=response.getWriter()
//设置保存上传文件的目录
String uploadDir =getServletContext().getRealPath("/up")
System.out.println(uploadDir)
if (uploadDir == null)
{
out.println("无法访问存储目录!")
return
}
//根据路径创建一个文件
File fUploadDir = new File(uploadDir)
if(!fUploadDir.exists()){
if(!fUploadDir.mkdir())//如果UP目录不存在 创建一个 不能创建输出...
{
out.println("无法创建存储目录!")
return
}
}
if (!DiskFileUpload.isMultipartContent(request))
{
out.println("只能处理multipart/form-data类型的数据!")
return
}
DiskFileUpload fu = new DiskFileUpload()
//最多上传200M数据
fu.setSizeMax(1024 * 1024 * 200)
//超过1M的字段数据采用临时文件缓存
fu.setSizeThreshold(1024 * 1024)
//采用默认的临时文件存储位置
//fu.setRepositoryPath(...)
//设置上传的普通字段的名称和文件字段的文件名所采用的字符集编码
fu.setHeaderEncoding("gb2312")
//得到所有表单字段对象的集合
List fileItems = null
try
{
fileItems = fu.parseRequest(request)//解析request对象中上传的文件
}
catch (FileUploadException e)
{
out.println("解析数据时出现如下问题:")
e.printStackTrace(out)
return
}
//处理每个表单字段
Iterator i = fileItems.iterator()
while (i.hasNext())
{
FileItem fi = (FileItem) i.next()
if (fi.isFormField()){
String content = fi.getString("GB2312")
String fieldName = fi.getFieldName()
request.setAttribute(fieldName,content)
}else{
try
{
String pathSrc = fi.getName()
if(pathSrc.trim().equals("")){
continue
}
int start = pathSrc.lastIndexOf('\\')
String fileName = pathSrc.substring(start + 1)
File pathDest = new File(uploadDir, fileName)
fi.write(pathDest)
String fieldName = fi.getFieldName()
request.setAttribute(fieldName, fileName)
}catch (Exception e){
out.println("存储文件时出现如下问题:")
e.printStackTrace(out)
return
}
finally //总是立即删除保存表单字段内容的临时文件
{
fi.delete()
}
}
}
注意 JSP页面的form要加enctype="multipart/form-data" 属性, 提交的时候要向服务器说明一下 此页面包含文件。
如果 还是麻烦,干脆使用Struts 的上传组件 他对FileUpload又做了封装,使用起来更傻瓜化,很容易掌握。
-----------------------------
以上回答,如有不明白可以联系我。
php是采用二进制形式存储图片及读取显示的,首先通过代码创建数据表,然后上传图片服务器再通过浏览器显示,具体编程代码举例:
1、首先需要创建数据表,具体代码如下图所示。
2、然后写上传图片到服务器的页面 upimage.html用来将图片上传数据库,如下图所示代码。
3、处理图片上传的php upimage.php文件,如下图所示图片已储存到数据库。
4、显示图片的php getimage.php文件,为了看一下效果提前把ID写入代码。
5、预览网站从数据库中提取了图片,并显示到页面上。
先导smartupload jar包!在写form表单<input tyle="file" enctype="multipart/form-data" method="post">enctype和method别写错了!写一个简单的吧!
<%page import="com.jspsmart.upload.*"%>
<%
SmartUpload su=new SmartUpload ()//初始化SmartUpload对象
try{//捕获他可能出现的异常
su.upload()//执行上传
}catch(Exception ex){
ex.printStackTrace
}
File file=su.getFile().getFile(0) //(得到单个的上传文件的信息)这里得到的File对象是你到的jar包里的com.jspsmart.upload.File类型 别写成IO 里面的File了
String filepath="upload\\"//在这之前要在你所建项目的目录下单建一个upload文件夹
filepath+=file.getFileName()
file.saveAs(filepath,SmartUpload.SAVE-VIRTUAL)
不知道是否建了与它相对应的数据库表啊?
不懂得再玩吧!
%>
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)