java项目客户上传的图片放到哪好
上传一般考虑两种办法:1、上传到服务器,数据库中存储服务器上的相对路径;2、转换为二进制流存入到数据库中。现在常用的做法都是选择第一种,因为第二种太占数据库空间,而且查找读取效率不高。很多开源的文件上传框架(比如spring中的commons-fileupload)都是采用第一种方式。上传到服务器不会影响系统的运行速度,你可以选择将的目录建立在非系统盘,存储容量比较大的盘,如F盘等。注意名字不要重复,建议用uuid
这里你弄错了一个问题;\x0d\你的程序是要传递的二进制数据\x0d\而不是传递路径,然后再到服务器读取文件数据(你的服务器有这个文件)\x0d\只有当你的服务器下有这个文件了,你传递一个路径,读取是可以的\x0d\//---\x0d\关于如何上传文件, 自己google一下,很多教程
先导smartupload jar包!在写form表单<input tyle="file" enctype="multipart/form-data" method="post">enctype和method别写错了!
写一个简单的吧!
<%page import="comjspsmartupload"%>
<%
SmartUpload su=new SmartUpload ();//初始化SmartUpload对象
try{ //捕获他可能出现的异常
suupload();//执行上传
}catch(Exception ex){
exprintStackTrace;
}
File file=sugetFile()getFile(0); //(得到单个的上传文件的信息)这里得到的File对象是你到的jar包里的comjspsmartuploadFile类型 别写成IO 里面的File了
String filepath="upload\\"; //在这之前要在你所建项目的目录下单建一个upload文件夹
filepath+=filegetFileName();
filesaveAs(filepath,SmartUploadSAVE-VIRTUAL);
不知道是否建了与它相对应的数据库表啊?
不懂得再玩吧!
%>
string
realpath
=
servletactioncontextgetservletcontext()getrealpath("/upload")
;//获取服务器路径
string[]
targetfilename
=
uploadfilename;
for
(int
i
=
0;
i
<
uploadlength;
i++)
{
file
target
=
new
file(realpath,
targetfilename[i]);
fileutilscopyfile(upload[i],
target);
//这是一个文件复制类copyfile()里面就是io操作,如果你不用这个类也可以自己写一个io复制文件的类
}
其中private
file[]
upload;//
实际上传文件
private
string[]
uploadcontenttype;
//
文件的内容类型
private
string[]
uploadfilename;
//
上传文件名
这三个参数必须这样命名,因为文件上传控件默认是封装了这3个参数的,且在action里面他们应有get,set方法
0条评论