java代码用什么上传文件(java上传文件怎么实现的)
大家好,java代码用什么上传文件相信很多的网友都不是很明白,包括java上传文件怎么实现的也是一样,不过没有关系,接下来就来为大家分享关于java代码用什么上传文件和java上传文件怎么实现的的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!
一个浏览上传多个文件的java代码
在Java中可以用struts2实现多个文件同时上传代码,功能代码如下:
1、upload.jsp页面(选择上传文件)
<formaction="upload.action"name="uploadForm"method="post"enctype="multipart/form-data">
文件<inputtype="text"name="title"/><br/>
选择文件-:<inputtype="file"name="upload"/><br/>
选择文件二:<inputtype="file"name="upload"/><br/>
选择文件三:<inputtype="file"name="upload"/><br/>
<inputtype="submit"value="upload"/>
</form>
2、action代码如下:
//对应的Action依次遍历所有文件域,然后生成对应的输入文件流,输出文件流在指定的服务器保存路径中添加对应的输出文件流保存文件。同时动态指定服务器上文件的保存路径。
packagecom.inspur.action;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importorg.apache.struts2.ServletActionContext;
importcom.opensymphony.xwork2.ActionSupport;
publicclassUploadActionextendsActionSupport{
privateStringtitle;
privateFile[]upload;
privateString[]uploadFileName;
privateString[]uploadContentType;
privateStringsavePath;
publicStringgetTitle(){
returntitle;
}
publicvoidsetTitle(Stringtitle){
this.title=title;
}
publicFile[]getUpload(){
returnupload;
}
publicvoidsetUpload(File[]upload){
this.upload=upload;
}
publicString[]getUploadFileName(){
returnuploadFileName;
}
publicvoidsetUploadFileName(String[]uploadFileName){
this.uploadFileName=uploadFileName;
}
publicString[]getUploadContentType(){
returnuploadContentType;
}
publicvoidsetUploadContentType(String[]uploadContentType){
this.uploadContentType=uploadContentType;
}
publicStringgetSavePath(){
returnServletActionContext.getRequest().getRealPath(savePath);
}
publicvoidsetSavePath(StringsavePath){
this.savePath=savePath;
}
publicStringupload()throwsException{
File[]files=this.getUpload();
for(inti=0;i<files.length;i++){
FileOutputStreamfos=newFileOutputStream(this.getSavePath()+"\\"+this.getUploadFileName()[i]);
byte[]buffer=newbyte[1024];
FileInputStreamfis=newFileInputStream(files[i]);
intlen=0;
while((len=fis.read(buffer))>0){
fos.write(buffer,0,len);
}
}
returnSUCCESS;
}
}
3、success.jsp页面代码如下(上传成功界面显示所有上传的图片)
文件<s:propertyvalue="title"/><br/>
第一个图片:<imgalt="first"src="<s:propertyvalue="'upload/'+uploadFileName[0]"/>"/><br/>
第二个图片:<imgalt="second"src="<s:propertyvalue="'upload/'+uploadFileName[1]"/>"/><br/>
用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上传文件怎么实现的
common-fileupload是jakarta项目组开发的一个功能很强大的上传文件组件
下面先介绍上传文件到服务器(多文件上传):
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.util.regex.*;
import org.apache.commons.fileupload.*;
public class upload extends HttpServlet{
private static final String CONTENT_TYPE="text/html; charset=GB2312";
//Process the HTTP Post request
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
response.setContentType(CONTENT_TYPE);
PrintWriter out=response.getWriter();
try{
DiskFileUpload fu= new DiskFileUpload();
//设置允许用户上传文件大小,单位:字节,这里设为2m
fu.setSizeMax(2*1024*1024);
//设置最多只允许在内存中存储的数据,单位:字节
fu.setSizeThreshold(4096);
//设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录
fu.setRepositoryPath("c://windows//temp");
//开始读取上传信息
List fileItems= fu.parseRequest(request);
//依次处理每个上传的文件
Iterator iter= fileItems.iterator();
//正则匹配,过滤路径取文件名
String regExp=".+////(.+)$";
//过滤掉的文件类型
String[] errorType={".exe",".com",".cgi",".asp"};
Pattern p= Pattern.compile(regExp);
while(iter.hasNext()){
FileItem item=(FileItem)iter.next();
//忽略其他不是文件域的所有表单信息
if(!item.isFormField()){
String name= item.getName();
long size= item.getSize();
if((name==null||name.equals(""))&& size==0)
continue;
Matcher m= p.matcher(name);
boolean result= m.find();
if(result){
for(int temp=0;temp<ERRORTYPE.LENGTH;TEMP++){
if(m.group(1).endsWith(errorType[temp])){
throw new IOException(name+": wrong type");
}
}
try{
//保存上传的文件到指定的目录
//在下文中上传文件至数据库时,将对这里改写
item.write(new File("d://"+ m.group(1)));
out.print(name+""+size+"");
}
catch(Exception e){
out.println(e);
}
}
else
{
throw new IOException("fail to upload");
}
}
}
}
catch(IOException e){
out.println(e);
}
catch(FileUploadException e){
out.println(e);
}
}
}
现在介绍上传文件到服务器,下面只写出相关代码:
以sql2000为例,表结构如下:
字段名:name filecode
类型: varchar image
数据库插入代码为:PreparedStatement pstmt=conn.prepareStatement("insert into test values(?,?)");
代码如下:
。。。。。。
try{
这段代码如果不去掉,将一同写入到服务器中
//item.write(new File("d://"+ m.group(1)));
int byteread=0;
//读取输入流,也就是上传的文件内容
InputStream inStream=item.getInputStream();
pstmt.setString(1,m.group(1));
pstmt.setBinaryStream(2,inStream,(int)size);
pstmt.executeUpdate();
inStream.close();
out.println(name+""+size+"");
}
。。。。。。
这样就实现了上传文件至数据库
关于本次java代码用什么上传文件和java上传文件怎么实现的的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。