java上传图片 建立什么 请问用Java 如何实现图片上传功能
这篇文章给大家聊聊关于java上传图片 建立什么,以及请问用Java 如何实现图片上传功能 对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。
用java怎么上传图片到项目指定的文件夹
你的意思是拷贝吗,还是上传到服务器什么的
import java.io.*;
/**
*复制文件夹或文件夹
*/
public class CopyDirectory{
//源文件夹
static String url1="f:/photos";
//目标文件夹
static String url2="d:/tempPhotos";
public static void main(String args[]) throws IOException{
//创建目标文件夹
(new File(url2)).mkdirs();
//获取源文件夹当前下的文件或目录
File[] file=(new File(url1)).listFiles();
for(int i= 0; i< file.length; i++){
if(file[i].isFile()){
//复制文件
copyFile(file[i],new File(url2+file[i].getName()));
}
if(file[i].isDirectory()){
//复制目录
String sourceDir=url1+File.separator+file[i].getName();
String targetDir=url2+File.separator+file[i].getName();
copyDirectiory(sourceDir, targetDir);
}
}
}
//复制文件
public static void copyFile(File sourceFile,File targetFile)
throws IOException{
//新建文件输入流并对它进行缓冲
FileInputStream input= new FileInputStream(sourceFile);
BufferedInputStream inBuff=new BufferedInputStream(input);
//新建文件输出流并对它进行缓冲
FileOutputStream output= new FileOutputStream(targetFile);
BufferedOutputStream outBuff=new BufferedOutputStream(output);
//缓冲数组
byte[] b= new byte[1024* 5];
int len;
while((len=inBuff.read(b))!=-1){
outBuff.write(b, 0, len);
}
//刷新此缓冲的输出流
outBuff.flush();
//关闭流
inBuff.close();
outBuff.close();
output.close();
input.close();
}
//复制文件夹
public static void copyDirectiory(String sourceDir, String targetDir)
throws IOException{
//新建目标目录
(new File(targetDir)).mkdirs();
//获取源文件夹当前下的文件或目录
File[] file=(new File(sourceDir)).listFiles();
for(int i= 0; i< file.length; i++){
if(file[i].isFile()){
//源文件
File sourceFile=file[i];
//目标文件
File targetFile=new
File(new File(targetDir).getAbsolutePath()
+File.separator+file[i].getName());
copyFile(sourceFile,targetFile);
}
if(file[i].isDirectory()){
//准备复制的源文件夹
String dir1=sourceDir+"/"+ file[i].getName();
//准备复制的目标文件夹
String dir2=targetDir+"/"+ file[i].getName();
copyDirectiory(dir1, dir2);
}
}
}
}
请问用Java 如何实现图片上传功能
我有一段上传图片的代码,并且可以根据实际,按月或按天等,生成存放图片的文件夹
首先在JSP上放一个FILE的标签这些我都不说了,你也一定明白,我直接把处理过程给你发过去
我把其中存到数据库中的内容删除了,你改一下就能用
/**
*
*上传图片
*@param servlet
*@param request
*@param response
*@return
*@throws Exception
*/
//这里我是同步上传的,你随意
public synchronized String importPic(HttpServlet servlet, HttpServletRequest request,HttpServletResponse response) throws Exception{
SimpleDateFormat formatDate= new SimpleDateFormat("yyyyMM");
Date nowtime=new Date();
String formatnowtime=formatDate.format(nowtime);
File root= new File(request.getRealPath("/")+"uploadfile/images/"+formatnowtime+"/");//应保证在根目录中有此目录的存在如果没有,下面则上创建新的文件夹
if(!root.isDirectory())
{
System.out.println("创建新文件夹成功"+formatnowtime);
root.mkdir();
}
int returnflag= 0;
SmartUpload mySmartUpload=new SmartUpload();
int file_size_max=1024000;
String ext="";
String url="uploadfile/images/"+formatnowtime+"/";
//只允许上载此类文件
try{
//初始化
mySmartUpload.initialize(servlet.getServletConfig(),request,response);
mySmartUpload.setAllowedFilesList("jpg,gif,bmp,jpeg,png,JPG");
//上载文件
mySmartUpload.upload();
} catch(Exception e){
response.sendRedirect()//返回页面
}
com.jspsmart.upload.File myFile= mySmartUpload.getFiles().getFile(0);
if(myFile.isMissing()){//没有选择图片做提示!
returnflag= 3;
}else{
String myFileName=myFile.getFileName();//取得上载的文件的文件名
ext= myFile.getFileExt();//取得后缀名
if(ext.equals("jpg")||ext.equals("gif")||ext.equals("bmp")||ext.equals("jpeg")||ext.equals("png")||ext.equals("JPG")){//jpeg,png不能上传!)
int file_size=myFile.getSize();//取得文件的大小
String saveurl="";
if(file_size<file_size_max){
try{
//我上面说到,把操作数据库的代友删除了,这里就应该是判断,你的图片是不是已经存在了,存在要怎么处理,不存在要怎么处了,就是你的事了}
//更改文件名,取得当前上传时间的毫秒数值
Calendar calendar= Calendar.getInstance();
//String filename= String.valueOf(calendar.getTimeInMillis());
String did= contractBean.getMaxSeq("MULTIMEDIA_SEQ");
String filename= did;
String flag="0";
String path= request.getRealPath("/")+url;
String ename= myFile.getFileExt();
//.toLowerCase()转换大小写
saveurl=request.getRealPath("/")+url;
saveurl+=filename+"."+ext;//保存路径
myFile.saveAs(saveurl,mySmartUpload.SAVE_PHYSICAL);
//将图片信息插入到数据库中
//------上传完成,开始生成缩略图-----
java.io.File file= new java.io.File(saveurl);//读入刚才上传的文件
String newurl=request.getRealPath("/")+url+filename+"_min."+ext;//新的缩略图保存地址
Image src= javax.imageio.ImageIO.read(file);//构造Image对象
float tagsize=200;
int old_w=src.getWidth(null);
int old_h=src.getHeight(null);
int new_w=0;
int new_h=0;
int tempsize;
float tempdouble;
if(old_w>old_h){
tempdouble=old_w/tagsize;
}else{
tempdouble=old_h/tagsize;
}
// new_w=Math.round(old_w/tempdouble);
// new_h=Math.round(old_h/tempdouble);//计算新图长宽
new_w=150;
new_h=110;//计算新图长宽
BufferedImage tag= new BufferedImage(new_w,new_h,BufferedImage.TYPE_INT_RGB);
tag.getGraphics().drawImage(src,0,0,new_w,new_h,null);//绘制缩小后的图
FileOutputStream newimage=new FileOutputStream(newurl);//输出到文件流
JPEGImageEncoder encoder= JPEGCodec.createJPEGEncoder(newimage);
encoder.encode(tag);//近JPEG编码
newimage.close();
returnflag= 1;
}else{
returnflag= 0;
System.out.println("('上传文件大小不能超过"+(file_size_max/1000)+"K');");
}
}else{
returnflag= 2;
}
}
response.sendRedirect();
return"11";
}
java web项目中有很多的图片,如何存放
一般有两种情况,
一种是前端开发需要显示的图片,这个是页面构成必须的元素,一般这些会做动静分离,后台接口跟前端资源会部署在不同的服务器上,有不同的优化,一般会有转发的服务器,判断是后台接口,就转发到后台的服务器,如果是前端资源,就转发到前台的服务器。一般情况下,前端服务器,跟后台的服务器,是分离开的,有不同的人去管理,如果项目小的话,可能就全放在一个。这个优化的化,你可以去了解下 CDN原理。这个是用来优化静态资源加载情况的。
另一种情况是,显示的图片,不是前端构成的,是用户上传文件产生的,这种情况下,现在一般有专门的对象存储,用过七牛云,跟阿里的。这个的逻辑是文件上传的时候,不是上传到我们自己的服务器,上传到专门的云服务器,我们自己数据库只需要保存这些上传文件的地址,真正使用的时候,把连接给前端,前端自动会根据内容到专门的云服务器上去获取。所有的安全,优化,带宽,缓存命中,这些都有由云服务器去保证。简单来说,只有有钱,这些东西根本不会成为你项目的瓶颈。
作为技术,我们讨论的应该不是这些。图片会做备份,这个可以有专门的磁盘阵列去实现,简单来说,就是上传的内容保存到磁盘的时候,会自动多保存几个备份到不同的磁盘上。还是那句话,多去了解下CDN的原理,最后这段,个人理解,不一定对。
java项目客户上传的图片放到哪好
图片上传一般考虑两种办法:1、上传到服务器,数据库中存储服务器上图片的相对路径;2、转换为二进制流存入到数据库中。现在常用的做法都是选择第一种,因为第二种太占数据库空间,而且查找读取效率不高。很多开源的文件上传框架(比如spring中的commons-fileupload)都是采用第一种方式。上传图片到服务器不会影响系统的运行速度,你可以选择将图片的目录建立在非系统盘,存储容量比较大的盘,如F盘等。注意图片名字不要重复,建议用uuid
关于java上传图片 建立什么和请问用Java 如何实现图片上传功能 的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。