当前位置:首页 » 文件管理 » java上传附件

java上传附件

发布时间: 2022-02-02 17:05:19

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代码实现文件上传

FormFilefile=manform.getFile();
StringnewfileName=null;
Stringnewpathname=null;
StringfileAddre="/numUp";
try{
InputStreamstream=file.getInputStream();//把文件读入
StringfilePath=request.getRealPath(fileAddre);//取系统当前路径
Filefile1=newFile(filePath);//添加了自动创建目录的功能
((File)file1).mkdir();
newfileName=System.currentTimeMillis()
+file.getFileName().substring(
file.getFileName().lastIndexOf('.'));
ByteArrayOutputStreambaos=newByteArrayOutputStream();
OutputStreambos=newFileOutputStream(filePath+"/"
+newfileName);
newpathname=filePath+"/"+newfileName;
System.out.println(newpathname);
//建立一个上传文件的输出流
System.out.println(filePath+"/"+file.getFileName());
intbytesRead=0;
byte[]buffer=newbyte[8192];
while((bytesRead=stream.read(buffer,0,8192))!=-1){
bos.write(buffer,0,bytesRead);//将文件写入服务器
}
bos.close();
stream.close();
}catch(FileNotFoundExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}

Ⅲ java文件上传问题

第一句就是创建一个Map对象

第二句是获取:文件上传的路径

例如:

StringrealPath=ServletActionContext.getServletContext().getRealPath(
"/upload");
FileUtils.File(file,newFile(realPath,fileFileName));

上传以后图片的位置:

Ⅳ java如何实现文件上传

public static int transFile(InputStream in, OutputStream out, int fileSize) {
int receiveLen = 0;
final int bufSize = 1000;
try {
byte[] buf = new byte[bufSize];
int len = 0;
while(fileSize - receiveLen > bufSize)
{
len = in.read(buf);
out.write(buf, 0, len);
out.flush();
receiveLen += len;
System.out.println(len);
}
while(receiveLen < fileSize)
{
len = in.read(buf, 0, fileSize - receiveLen);
System.out.println(len);
out.write(buf, 0, len);
receiveLen += len;
out.flush();
}
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
return receiveLen;
}
这个方法从InputStream中读取内容,写到OutputStream中。
那么发送文件方,InputStream就是FileInputStream,OutputStream就是Socket.getOutputStream.
接受文件方,InputStream就是Socket.getInputStream,OutputStream就是FileOutputStream。
就OK了。 至于存到数据库里嘛,Oracle里用Blob。搜索一下,也是一样的。从Blob能获取一个输出流。

Ⅳ Java文件上传的几种方式

1、通过Servlet类上传
2、通过Struts框架实现上传
ITJOB学到两种方式

Ⅵ java实现文件的上传和下载

用输出流 接受 一个下载地址的网络流
然后将这个输出流 保存到本地一个文件 后缀与下载地址的后缀相同··

上传的话 将某个文件流 转成字节流 上传到某个webservice方法里

-------要代码来代码

URL url=new URL("http://www..com/1.rar");
URLConnection uc=url.openConnection();
InputStream in=uc.getInputStream();
BufferedInputStream bis=new BufferedInputStream(in);
FileOutputStream ft=new FileOutputStream("E://1.rar");

这是下载 上传太麻烦就不给写了

Ⅶ java 上传附件实现方法

上传附件,实际上就是将文件存储到远程服务器,进行临时存储。举例:
**
* 上传文件
*
* @param fileName
* @param plainFilePath 文件路径路径
* @param filepath
* @return
* @throws Exception
*/
public static String fileUploadByftp(String plainFilePath, String fileName, String filepath) throws Exception {
FileInputStream fis = null;
ByteArrayOutputStream bos = null;
FTPClient ftpClient = new FTPClient();
String bl = "false";
try {
fis = new FileInputStream(plainFilePath);
bos = new ByteArrayOutputStream(fis.available());
byte[] buffer = new byte[1024];
int count = 0;
while ((count = fis.read(buffer)) != -1) {
bos.write(buffer, 0, count);
}
bos.flush();
Log.info("加密上传文件开始");
Log.info("连接远程上传服务器"+CCFCCBUtil.CCFCCBHOSTNAME+":"+22);
ftpClient.connect(CCFCCBUtil.CCFCCBHOSTNAME, 22);
ftpClient.login(CCFCCBUtil.CCFCCBLOGINNAME, CCFCCBUtil.CCFCCBLOGINPASSWORD);
FTPFile[] fs;
fs = ftpClient.listFiles();
for (FTPFile ff : fs) {
if (ff.getName().equals(filepath)) {
bl="true";
ftpClient.changeWorkingDirectory("/"+filepath+"");
}
}
Log.info("检查文件路径是否存在:/"+filepath);
if("false".equals(bl)){
ViewUtil.dataSEErrorPerformedCommon( "查询文件路径不存在:"+"/"+filepath);
return bl;
}
ftpClient.setBufferSize(1024);
ftpClient.setControlEncoding("GBK");
// 设置文件类型(二进制)
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
ftpClient.storeFile(fileName, fis);
Log.info("上传文件成功:"+fileName+"。文件保存路径:"+"/"+filepath+"/");
return bl;
} catch (Exception e) {
throw e;
} finally {
if (fis != null) {
try {
fis.close();
} catch (Exception e) {
Log.info(e.getLocalizedMessage(), e);
}
}
if (bos != null) {
try {
bos.close();
} catch (Exception e) {
Log.info(e.getLocalizedMessage(), e);
}
}
}
}
备注:只需要修改上传的服务器地址、用户名、密码即可进行服务器访问上传。根据实际需要修改即可。

Ⅷ java上传附件数据库怎么设计

2种方式;

  1. 保存文件路径;

  2. 将文件写入数据库,使用blob字段

Ⅸ java上传文件怎么弄

jsp: <input id="file" name="doc" type="file" style="position:absolute;filter:alpha(opacity=0);width:152px;height:120px;top:40px;left:10px" >

public String dbUpload(){
ActionContext ctx = ActionContext.getContext();
HttpServletRequest req = (HttpServletRequest) ctx.get(ServletActionContext.HTTP_REQUEST);
MultiPartRequestWrapper wrapper = (MultiPartRequestWrapper)req;
File doc =wrapper.getFile("doc");
String fileName=null;
if(doc!=null){
fileName="/"+String.valueOf(System.currentTimeMillis())+"."+wrapper.getContentTypes("doc")[0].substring(6);
try {
// String dri=req.getRealPath("img"); //代表图片上传的地方为img文件夹
String dri=imagdirectory;
File target =new File(dri+fileName);
FileUtils.File(doc, target);
}catch(Exception e) {
e.printStackTrace();
}finally {
if(doc.exists()){
doc.delete();
}

}
}
return fileName;
}

热点内容
机械师和战神同样配置下哪个最好 发布:2024-10-22 04:17:18 浏览:60
c语言对话框 发布:2024-10-22 04:11:43 浏览:75
java程序源代码 发布:2024-10-22 04:00:44 浏览:111
怎么把驱动编译进内核 发布:2024-10-22 03:58:40 浏览:241
web前端学习编译器 发布:2024-10-22 03:57:59 浏览:628
回溯密码箱密码多少 发布:2024-10-22 03:45:45 浏览:864
复数算法 发布:2024-10-22 03:45:37 浏览:877
mc风云服务器地址 发布:2024-10-22 03:43:31 浏览:46
c读取数据库 发布:2024-10-22 03:39:12 浏览:249
c语言程序介绍 发布:2024-10-22 03:30:55 浏览:816