随着互联网的快速发展和大数据时代的到来,人们对于网站或应用程序的需求也不断增加,其中对于文件上传功能的需求也越来越大。然而,传统的文件上传只能将文件存储到服务器的文件系统上,对于管理和维护都存在一定的困难。因此,将上传的文件保存到数据库中已成为一种较为流行的文件管理方式。本文将介绍。
创新互联专业成都网站设计、网站建设,集网站策划、网站设计、网站制作于一体,网站seo、网站优化、网站营销、软文发稿等专业人才根据搜索规律编程设计,让网站在运行后,在搜索中有好的表现,专业设计制作为您带来效益的网站!让网站建设为您创造效益。
一、创建数据库表格
在将上传的文件保存到数据库中前,必须创建一个数据库表格。这个表格将存储文件的相关信息。表格的结构如下:
CREATE TABLE `upload_file` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`file_name` varchar(200) NOT NULL,
`file_type` varchar(50) NOT NULL,
`file_size` int(11) NOT NULL,
`file_content` longblob NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
以上表格中的字段:id表示文件的编号,file_name表示文件名称,file_type表示文件类型,file_size表示文件大小,file_content则是文件内容,这里采用longblob类型存储。
二、编写上传文件页面
在编写上传文件页面时,需要使用到表格的结构信息。为了更好地操作数据库,我们需引入一些数据库处理的类。
需要引用的文件包如下:
import java.io.*;
import java.sql.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.sql.*;
import javax.naming.*;
以下是上传文件的主要代码:
@WebServlet(name = “UploadServlet”, urlPatterns = { “/UploadServlet” })
@MultipartConfig
public class UploadServlet extends HttpServlet {
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType(“text/html”);
PrintWriter out = response.getWriter();
String fileName = “”;
String fileType = “”;
int fileSize = 0;
InputStream fileContent = null;
Part filePart = request.getPart(“file”);
if (filePart != null) {
fileName = filePart.getSubmittedFileName();
fileType = filePart.getContentType();
fileSize = (int) filePart.getSize();
fileContent = filePart.getInputStream();
}
if (fileName.equals(“”)) {
out.println(“
“);
return;
}
Connection conn = null;
PreparedStatement stmt = null;
try {
InitialContext ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup(“java:comp/env/jdbc/MySQLDB”);
conn = ds.getConnection();
stmt = conn.prepareStatement(“INSERT INTO upload_file(file_name, file_type, file_size, file_content) VALUES (?, ?, ?, ?)”);
stmt.setString(1, fileName);
stmt.setString(2, fileType);
stmt.setInt(3, fileSize);
stmt.setBinaryStream(4, fileContent, fileSize);
stmt.execute();
out.println(“
“);
} catch (Exception e) {
out.println(“
“);
} finally {
try {
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (Exception e) {}
}
}
}
以上代码中,我们首先获取上传的文件信息,如文件名、文件类型、文件大小和文件内容等。接着,我们获取数据源,从而得到数据库连接。我们将文件的信息插入到数据库表格中。
三、浏览上传的文件
为了查看数据库中已上传的文件,我们需要构建一个用来显示上传文件列表的页面。这个页面需要连接数据库,并从数据库中获取文件列表信息,并显示到页面中。
以下是用来显示文件列表的代码:
@WebServlet(name = “FileListServlet”, urlPatterns = { “/FileListServlet” })
public class FileListServlet extends HttpServlet {
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType(“text/html”);
PrintWriter out = response.getWriter();
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
InitialContext ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup(“java:comp/env/jdbc/MySQLDB”);
conn = ds.getConnection();
stmt = conn.createStatement();
rs = stmt.executeQuery(“SELECT * FROM upload_file”);
out.println(“
“);
out.println(“
“);
out.println(“
“);
out.println(“
“);
out.println(“
“);
out.println(“
“);
while (rs.next()) {
int id = rs.getInt(“id”);
String fileName = rs.getString(“file_name”);
String fileType = rs.getString(“file_type”);
int fileSize = rs.getInt(“file_size”);
out.println(“
“);
out.println(“
“);
out.println(“
“);
out.println(“
“);
out.println(“
“);
out.println(“
“);
}
out.println(“
out.println(“
out.println(“
out.println(“
ID | FileName | FileType | FileSize | Download |
---|---|---|---|---|
” + id + “ | ” + fileName + “ | ” + fileType + “ | ” + fileSize + “ | Download |
“);
} catch (Exception e) {
out.println(“
“);
} finally {
try {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (Exception e) {}
}
}
}
以上代码中,我们首先获取数据源,并连接数据库。接着,我们查询数据库中的文件列表信息,并将其显示到页面中。如果用户想下载文件,我们可以提供一个链接,使用户可以下载文件。在链接中,我们也会传入文件编号,以便告诉下载程序需要下载哪个文件。
四、下载文件
为了下载数据库中的文件,我们需要编写一个下载文件的Servlet程序。在这个程序中,我们首先根据文件的编号从数据库中查找文件信息,然后发回给客户端下载。以下是下载文件的Servlet程序:
@WebServlet(name = “DownloadServlet”, urlPatterns = { “/DownloadServlet” })
public class DownloadServlet extends HttpServlet {
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType(“application/octet-stream”);
PrintWriter out = response.getWriter();
String fileId = request.getParameter(“id”);
if (fileId == null || fileId.equals(“”)) {
out.println(“
“);
return;
}
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
InitialContext ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup(“java:comp/env/jdbc/MySQLDB”);
conn = ds.getConnection();
stmt = conn.prepareStatement(“SELECT * FROM upload_file WHERE id = ?”);
stmt.setInt(1, Integer.parseInt(fileId));
rs = stmt.executeQuery();
if (!rs.next()) {
out.println(“
“);
return;
}
String fileName = rs.getString(“file_name”);
String fileType = rs.getString(“file_type”);
InputStream fileContent = rs.getBinaryStream(“file_content”);
response.setHeader(“Content-Disposition”, “attachment;filename=” + fileName);
response.setContentType(fileType);
OutputStream outputStream = response.getOutputStream();
byte[] buffer = new byte[1024];
int bytesRead = -1;
while ((bytesRead = fileContent.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
} catch (Exception e) {
out.println(“
“);
} finally {
try {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (Exception e) {}
}
}
}
以上代码中,我们从请求中获取下载的文件编号,然后连接数据库,查找该文件的信息,最后将文件的内容发回给客户端供下载。
:
本文介绍了。需要注意的是,在存储文件到数据库过程中,必须将文件的内容存储为二进制字节数组,同时需要注意数据库表格中的每个字段的属性定义。此外,为了方便我们将文件浏览和下载,我们还需要编写相应的页面和程序来实现这些功能。
成都网站建设公司-创新互联,建站经验丰富以策略为先导10多年以来专注数字化网站建设,提供企业网站建设,高端网站设计,响应式网站制作,设计师量身打造品牌风格,热线:028-86922220使用Upload控件:
string UserDirectory = “news”;//存放图片的文件夹
string UserPath = Server.MapPath(“../UploadFiles”).ToString() + “\\” + UserDirectory + “\\” + “新闻” + “\\” + “Img” + “\\” + DateTime.Now.ToString(“yyyy”) + DateTime.Now.ToString(“MM”);//图片存放路径
string ImgFileName;
string FileName;
string FileType;
string UploadImgName = FileUploadImg.PostedFile.FileName; //文件在本地的原始位置
FileName = UploadImgName.Substring(UploadImgName.LastIndexOf(‘\\’) + 1).ToString();//得到文件名
FileType = UploadImgName.Substring(UploadImgName.LastIndexOf(“.”) + 1);//得到后缀名
if (StringFun.GetimgFileName.Getimg(FileUploadImg, UserPath, out ImgFileName))
{
imgDataUrl = “UploadFiles/” + UserDirectory + “/” + “新闻” + “/” + “Img” + “/” + DateTime.Now.ToString(“yyyy”) + DateTime.Now.ToString(“MM”) + “/” + ImgFileName;//数据库存放路径
}
上传文件怎么保存到数据库的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于上传文件怎么保存到数据库,如何将上传的文件保存到数据库中,asp.net怎么上传文件并将文件路径保存到数据库呢?的信息别忘了在本站进行查找喔。
创新互联【028-86922220】值得信赖的成都网站建设公司。多年持续为众多企业提供成都网站建设,成都品牌建站设计,成都高端网站制作开发,SEO优化排名推广服务,全网营销让企业网站产生价值。
分享名称:如何将上传的文件保存到数据库中(上传文件怎么保存到数据库)
URL地址:http://www.gawzjz.com/qtweb/news39/192989.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联