本文目录一览:
java 中如何向服务器上传图片
我们使用一些已有的组件帮助我们实现这种上传功能。 常用的上传组件:
- Apache 的 Commons FileUpload
- JavaZoom的UploadBean
- jspSmartUpload 以下,以FileUpload为例讲解
- 在jsp端
<form id="form1" name="form1" method="post" action="servlet/fileServlet" enctype="multipart/form-data">
要注意 enctype="multipart/form-data"
。
然后只需要放置一个file控件,并执行submit操作即可:
<input name="file" type="file" size="20">
<input type="submit" name="submit" value="提交">
- web端 核心代码如下:
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
try {
List items = upload.parseRequest(request);
Iterator itr = items.iterator();
while (itr.hasNext()) {
FileItem item = (FileItem) itr.next();
if (item.isFormField()) {
System.out.println("表单参数名:" + item.getFieldName() + ",表单参数值:" + item.getString("UTF-8"));
} else {
if (item.getName() != null && !item.getName().equals("")) {
System.out.println("上传文件的大小:" + item.getSize());
System.out.println("上传文件的类型:" + item.getContentType());
System.out.println("上传文件的名称:" + item.getName());
File tempFile = new File(item.getName());
File file = new File(sc.getRealPath("/") + savePath, tempFile.getName());
item.write(file);
request.setAttribute("upload.message", "上传文件成功!");
} else {
request.setAttribute("upload.message", "没有选择上传文件!");
}
}
}
} catch (FileUploadException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
request.setAttribute("upload.message", "上传文件失败!");
}
request.getRequestDispatcher("/uploadResult.jsp").forward(request, response);
}
用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 {
// 我上面说到,把操作数据库的代码删除了,这里就应该是判断,你的图片是不是已经存在了,存在要怎么处理,不存在要怎么处理,就是你的事了
} catch (Exception e) {
// 异常处理
}
// 更改文件名,取得当前上传时间的毫秒数值
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";
}