Mysql 使用jsp将多种文件格式上载到服务器并将路径存储在数据库中
我想将文件(所有格式)上传到服务器并将文件位置存储在数据库(MySQL)中。我尝试使用long blob格式将文件(所有格式)存储在数据库中,但它不接受不超过1kb的文件大小,并且只接受文本文件。 这是我的html代码Mysql 使用jsp将多种文件格式上载到服务器并将路径存储在数据库中,mysql,html,jsp,netbeans,Mysql,Html,Jsp,Netbeans,我想将文件(所有格式)上传到服务器并将文件位置存储在数据库(MySQL)中。我尝试使用long blob格式将文件(所有格式)存储在数据库中,但它不接受不超过1kb的文件大小,并且只接受文本文件。 这是我的html代码 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title&
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<form enctype="multipart/form-data" action="upload.jsp" method="post">
<br/><br/><br/>
<center>
<table border="0" bgcolor=#ccFDDEE>
<tr>
<td colspan="2" align="center"><b>UPLOAD THE FILE</b></td>
</tr>
<tr>
<td colspan="2" align="center"> </td>
</tr>
<tr>
<td><b>Choose the file To Upload:</b></td>
<td><INPUT NAME="file" TYPE="file"> </td>
</tr>
<tr>
<td colspan="2" align="center"> </td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="Send File"> </td>
</tr>
<table>
</center>
</form>
</body>
</html>
JSP页面
上传文件
选择要上载的文件:
下面是我的jsp代码,用于将文件存储到数据库(使用长blob)
= 0)) {
DataInputStream in=新的DataInputStream(request.getInputStream());
int formDataLength=request.getContentLength();
字节数据字节[]=新字节[formDataLength];
int byteRead=0;
int totalBytesRead=0;
while(totalBytesRead
您已通过以下名称成功上载文件:
0) {
System.out.println(“上传成功!”);
}
否则{
System.out.println(“无法上传文件”);
}
}
捕获(例外e){
e、 printStackTrace();
}
}
%>
现在,我必须将文件存储到服务器并将其路径存储到db,或者使用netbeans和glassfish服务器(red hat linux)使用long blob type.iam将文件(所有格式)存储在数据库中。给我一些想法。我强烈建议您使用人们为多部分文件上载处理而构建的现有模块之一。如果是更流行的模块之一,我建议您研究一下(使用示例) 您的代码非常混乱,您正在以一定的方式混合使用字节数组和字符串,这肯定会产生错误。这是:
int boundaryLocation = file.indexOf(boundary, pos) - 4;
int startPos = ((file.substring(0, pos)).getBytes()).length;
int endPos = ((file.substring(0, boundaryLocation)).getBytes()).length;
...
fileOut.write(dataBytes, startPos, (endPos - startPos));
不管怎样,如果你坚持自己做,你应该清理你的代码,不要混合使用字符串和字节数组(记住,字符串中的一个字符不一定只有一个字节)。但是我不推荐它,除非这是您的学习体验。在这种情况下,我会花一些时间尝试在internet上查找一些用于多部分表单处理的示例代码。在mysql中使用mediumblob(最多16mb上载)
或longblob(最多1GB或4GB)
。
并在my.ini
- 如果在mysql中使用mediumblob:
max\u allowed\u packet=16M
- 如果在mysql中使用
:largeblob
max\u allowed\u packet=1024M
int boundaryLocation = file.indexOf(boundary, pos) - 4;
int startPos = ((file.substring(0, pos)).getBytes()).length;
int endPos = ((file.substring(0, boundaryLocation)).getBytes()).length;
...
fileOut.write(dataBytes, startPos, (endPos - startPos));