‘壹’ 用Java如何实现头像上传
使用MyEclipse实现上传时,所选择的请求必须是POST请求,如下jsp:
<body>
<h3 align="left">
上传头像
</h3>
<br>
<form action="UploadServlet" method="post"
enctype="multipart/form-data">
姓名:
<input type="text" name="username">
<br>
头像:
<input type="file" name="photo">
<br>
<input type="submit" value="上传">
</form>
</body>
其次是需要添加上传的jar包commons-fileupload-1.3.1.jar、commons-io-2.4.jar
最后需要在Servlet中进行逻辑处理:
// 1、创建FileUpload对象
// (1)创建工厂
FileItemFactory factory = new DiskFileItemFactory();
// (2)创建FileUpload对象
ServletFileUpload upload = new ServletFileUpload(factory);
// (3)把请求中的所有数据转换成FileItem对象
try {
List<FileItem> list = upload.parseRequest(request);
// (4)判断是文件域还是表单域,如果是表单域,则返回true
for (int i = 0; i < list.size(); i++) {
if (list.get(i).isFormField()) {
// (5)获取input标签中name属性的值
if (list.get(i).getFieldName().equals("username")) {
// 输出提取到的具体的值
System.out.println("用户姓名为:"
+ list.get(i).getString("utf-8"));
}
} else {
// 输出上传的路径
System.out.println("upload的路径:"
+ getServletContext().getRealPath("upload"));
// 获取到上传的文件的名字
File file = new File(getServletContext().getRealPath(
"upload"),
list.get(i)
.getName()
.substring(
list.get(i).getName()
.lastIndexOf("\\") + 1));
list.get(i).write(file);
}
}
‘贰’ 如何java中实现上传头像功能
方法一:
①下载fileupload 插件,将文件转换成流;
方法二:
可以将头像文件做一次压缩处理,原图一个路径,压缩图一个路径。压缩图路径展示的是小图,原图路径展示的是原图。
‘叁’ java 图片上传,图片上传是上传到哪里比较好服务器上还是数据库
上传到服务器上会比较好,数据库可以记录一些必要的信息,比如文件的名称,类型(扩展名),大小,创建时间及谁的文件等等;如果把文件放入数据库,读写性能不如文件系统,还会加大数据库的压力。放到服务器上注意要设计好一个文件结构,不然以后一个文件夹里有成千上万个文件,打开那个文件夹就要好久,更不用说查找和下载了。
‘肆’ 如何java中实现上传头像功能
其实就是上传文件,方便点的下载个fileupload 插件,将文件转换成流,然后再写出到指定的路径,将存储路径存储在数据库中。再好点的,可以将这个头像文件做一次压缩处理,原图一个路径,压缩图一个路径。压缩图路径展示小图,原图路径展示原图。一般这个路径都是基于工程的相对路径。
‘伍’ java web实现上传头像功能,
你最好是固定一台为文件服务器,用来上传图片,或者上传时把上传到哪台服务器记录到数据库里面去做个标记,查询时候判断一下
‘陆’ 在Java项目中上传图片时如何使上传的图片自动保存到指定路径
用struts也可以实现 多文件上传
下面是我写的代码,
参数中有要保存的目录
作为参考!
/*文件目录*/
public static String [] fileArray={
"logo.png",
"index.swf",
"OEMInfo.txt",
"favicon.ico"};
/**
* @author Caoshun
* @see 接收并保存文件
* */
public static void receiveAndSaveAllFileByPath(ActionForm form,String rootPath1,String rootPath2){
String fileName="";
//获取表单中的文件资源
Hashtable<Object, Object> files = form.getMultipartRequestHandler().getFileElements();
//遍历文件,并且循环保存
//当前处理文件序号
int file_num=1;
for (Enumeration<Object> e = files.keys(); e.hasMoreElements();) {
/*根据处理的当前文件下标,确定文件名*/
fileName=fileArray[file_num-1];
FormFile file = (FormFile) files.get((String) e.nextElement());
if (file != null && file.getFileSize() > 0) {
try {
//使用formfile.getInputStream()来获取一个文件的输入流进行保存。
//文件名
//String fileName = file.getFileName();
//System.out.println("debug in AddEnterpriceAction.java on line 152 fileName is : "+fileName);
//文件大小
//int fileSize = file.getFileSize();
//文件流
InputStream is = file.getInputStream();
//将输入流保存到文件
//String rootPath = this.servlet.getServletContext().getRealPath("files");
//往cn中写入
File rf = new File(rootPath1);
FileOutputStream fos = null;
fos = new FileOutputStream(new File(rf, fileName));
byte[] b = new byte[10240];
int real = 0;
real = is.read(b);
while (real > 0) {
fos.write(b, 0, real);
real = is.read(b);
}
//往en中写入
File rf2 = new File(rootPath2);
InputStream is2 = file.getInputStream();
FileOutputStream fos2 = null;
fos2 = new FileOutputStream(new File(rf2, fileName));
byte[] b2 = new byte[10240];
int real2 = 0;
real2 = is2.read(b2);
while (real2 > 0) {
fos2.write(b2, 0, real2);
real2 = is2.read(b2);
}
//关闭文件流
fos.close();
is.close();
fos2.close();
is2.close();
} catch (RuntimeException e1) {
e1.printStackTrace();
} catch (Exception ee) {
ee.printStackTrace();
}
file.destroy();
}
file_num++;
}
}
‘柒’ 在Java web网站中用户注册信息时希望用户可以选择自己的头像,然后将照片存到sql server数据库中,怎么办
用户信息表增加头像地址 字段
用文件上传的控件,文件上传到服务器指定文件夹,获取该路径,将该路径保存到数据库
登录的时候再取出来跟其他用户属性一样,显示的地方拼接到img标签里
‘捌’ java 社交网站、博客等用户头像是怎么存储的
图片存在专门的资源服务器上,数据库存url,带域名的完整url
‘玖’ java项目客户上传的图片放到哪好
图片上传一般考虑两种办法:1、上传到服务器,数据库中存储服务器上图片的相对路径;2、转换为二进制流存入到数据库中。现在常用的做法都是选择第一种,因为第二种太占数据库空间,而且查找读取效率不高。很多开源的文件上传框架(比如spring中的commons-fileupload)都是采用第一种方式。上传图片到服务器不会影响系统的运行速度,你可以选择将图片的目录建立在非系统盘,存储容量比较大的盘,如F盘等。注意图片名字不要重复,建议用uuid