java는common-fileupload를 사용하여 파일 업로드를 실현합니다
4925 단어 javacommonfileupload파일 업로드
common-fileupload는common-io라는 가방에 의존하기 때문에 이 가방을 다운로드해야 합니다.프로젝트 경로 아래로 가져옵니다.
사용 코드는 다음과 같습니다.
package oop.hg.ytu.servlet;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import oop.hu.ytu.dao.UploadDomain;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class Upload extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// String describe = request.getParameter("describe");
DiskFileItemFactory factory = new DiskFileItemFactory();
@SuppressWarnings("deprecation")
String path = request.getRealPath("/upload");//
factory.setRepository(new File(path));
factory.setSizeThreshold(1024*1024);//
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setSizeMax(-1);// ,-1
try {
@SuppressWarnings("unchecked")
List<FileItem> list = upload.parseRequest(request);
String va = null;
for(FileItem item : list){
// String name = item.getFieldName();
if(item.isFormField()){//
va = item.getString("UTF-8");
// System.out.println(name+"="+va);
/// request.setAttribute(name, value);
}else{
String value = item.getName();//
int start = value.lastIndexOf("\\");
String fileName = value.substring(start+1);
// request.setAttribute(name, fileName);
InputStream in = item.getInputStream();
UploadDomain dao = new UploadDomain();
//item.write(new File(realPath,fileName));
int index = fileName.lastIndexOf(".");
String realFileName = fileName.substring(0,index);
String type = fileName.substring(index+1);
dao.insert(in, realFileName,type,va);//
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
여기에 업로드된 흐름이나 폼 안의 매개 변수, 예를 들어 텍스트 상자에 정보를 제출하고 데이터베이스에 삽입하는지 판단한다.데이터베이스 삽입코드는 다음과 같습니다.
package oop.hu.ytu.dao;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import oop.hg.ytu.utils.JdbcUtils;
/**
*
* @author Administrator
*
*/
public class UploadDomain {
/**
*
*/
public void insert(InputStream in, String fileName, String type,String describe) throws Exception{//
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
System.out.println(describe);
try {
// 2.
conn = JdbcUtils.getConnection();
// 3.
String sql = "insert into fileupload(file,filename,type,des) values (?,?,?,?)";
ps = conn.prepareStatement(sql);
ps.setBlob(1, in);
ps.setString(2, fileName);
ps.setString(3, type);
ps.setString(4, describe);
// 4.
ps.executeUpdate();
in.close();
} finally {
JdbcUtils.free(rs, ps, conn);
}
}
}
데이터베이스 기본 가격 문의 크기 제한이 발생할 수 있습니다. mysql 설치 디렉터리 아래에 my를 설치해야 합니다.ini 아래 설정을 변경합니다.[mysqld]
max_allowed_packet=64M
이렇게 하면 돼.물론 인코딩 형식에 주의하세요.파일 올리면 돼.그리고 제 열명은 describe로 설정되어 있습니다. 결과와 Mysql 보류 문자입니다.
갑자기 정보를 삽입할 수 없는 현상이 나타나니 앞으로 반드시 주의해야 한다.
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
38. Java의 Leetcode 솔루션텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.