Mysql 使用jsp将多种文件格式上载到服务器并将路径存储在数据库中

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&

我想将文件(所有格式)上传到服务器并将文件位置存储在数据库(MySQL)中。我尝试使用long blob格式将文件(所有格式)存储在数据库中,但它不接受不超过1kb的文件大小,并且只接受文本文件。 这是我的html代码

<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

如果您将文件存储在服务器上的某个指定位置,并且只在数据库中保存路径,这不是很好吗?这样渲染速度会很快,数据库会不那么复杂,但我不能用上面的代码存储所有文件格式,而且它不接受超过1kb的文件。有什么解决方案吗?更改代码,转到任何基于ajax的文件上载程序,你几乎可以上传任何东西:)我的代码有什么问题,你能指出吗?你的代码?这显然是从roseindia.net抄袭来的。请将该网站列入你的互联网黑名单。关于它的所有问题的概述,请看不要访问roseindia.net,它只会给你带来各种颜色和概念理解上的麻烦一般来说,对基本web开发的定义多年来都是完全错误的。
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));