直接将以二进制流的方式写入到mysql数据库中,由于数据量大,必然会导致服务器的数据库负载很大
我的建议: 采取将存储在物理磁盘 将相对路径存储在数据库中 这样会减小数据库负载
附上 "上传" 代码:
/// <summary>/// 上传
/// </summary>
/// <param name="files">文件框名称</param>
/// <param name="paths">上传文件路径,url</param>
/// <param name="fmax">文件的最大值,单位为字节</param>
/// <param name="ftype">类型:1表示;0表示所有文件</param>
/// <returns></returns>
public static string upfiles(SystemWebUIHtmlControlsHtmlInputFile files, string paths, long fmax, string ftype)
{
//files 文件上传组件的名称;paths 要上传到的目录;fmax是上传文件最大值;ftype是上传文件的类型
//默认上传文件最大值100k,文件类型为所有文件
//1为jpg or gif;0为所有文件
//如果文件大于设定值,返回代码0
//如果文件类型错误,返回代码1
//初始化
long fileMax = 100000;
string fileType = "0";
string fileTypet = "";
fileMax = fmax;
fileType = ftype;
if (filesPostedFileContentLength > fileMax)
{
return "0";
//返回错误代码,结束程序
}
fileTypet = SystemIOPathGetExtension(filesPostedFileFileName)ToLower();
if (fileType == "1")
{
if (fileTypet != "jpg" && fileTypet != "jpeg" && fileTypet != "gif")
{
return "1";
//返回错误代码,结束程序
}
}
string destdir = SystemWeb>
数据库 *** 作部分:
package comdatabase;import javaioInputStream;
import javasql;
/
@作者 王建明
@创建日期 13-10-7
@创建时间 下午12:32
@版本号 V 10
/
public class DataBaseUtil {
public static InputStream getImageStreamFromDataBase() {
Connection conn = null;
try {
ClassforName("commysqljdbcDriver");
conn =
DriverManagergetConnection("jdbc:mysql://localhost/quickstart", "root", "123456");
Statement stmt = conncreateStatement();
String sql = "select book_image from tbl_book where id=1 ";
ResultSet rs = stmtexecuteQuery(sql);
if (rsnext()) {
return rsgetBinaryStream("book_image");
}
} catch (Exception e) {
Systemoutprintln("出现异常: " + egetMessage());
} finally {
try {
if (conn != null)
connclose();
} catch (SQLException e) {
eprintStackTrace();
}
}
return null;
}
}
servlet部分:
package comservlet;import comdatabaseDataBaseUtil;
import javaxservletServletException;
import javaxservlet>}
webxml中的servlet配置:
<servlet><servlet-name>ShowImage</servlet-name>
<servlet-class>comservletShowImage</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ShowImage</servlet-name>
<url-pattern>/showImage</url-pattern>
</servlet-mapping>
页面中加载方式:
<img src="showImage" />希望对你有帮助O(∩_∩)O~
看你的表,不是保存在mysql数据库中,数据库中只是保存了的路径。想保存的数据库中必须定义字段为longblob类型如:`image` longblob ,然后
<$connect = MYSQL_CONNECT( "localhost", "root", "admin") or die("Unable to connect to MySQL server");
mysql_select_db("blogsystem") or die("Unable to select database");
$data = addslashes(fread(fopen($form_data, "r"), filesize($form_data)));
$result=MYSQL_QUERY( "INSERT INTO ccs_image (description,bin_data,filename,filesize,filetype) VALUES ('$form_description','$data','$form_data_name','$form_data_size','$form_data_type')");
$id= mysql_insert_id();
print "<p>This file has the following Database ID: <a href='get_dataphpid=$id'><b>$id</b></a>";
MYSQL_CLOSE();
>
上传的保存到哪里了?比如保存到C盘,数据库中应该存放的路径,然后输出到前台。或者上传,把存放到数据库中,用BLOB类型存放。
具体BLOB类型存取你可以查一下资料。
将本地数据库导入到服务器数据库的方法/步骤:
1、在本地和服务器都安装同样的数据库客户端,如oracle常用SQLPlus、MySQL常用HeiDisql或者navicat、mssql2005则常用SQLServerManagementStudio;
2、在本地通过数据库客户端导出数据库为sql文件;
3、将sql文件远程传递到服务器上;
4、在服务器上用相同的数据库客户端将sql文件执行一遍即可将本地数据库导入到服务器上。
用vchar存是可以的。但是首先对数据库的读/写的速度永远都赶不上文件系统处理的速度,其次数据库备份变的巨大,越来越耗时间,最后对文件的访问需要穿越你的应用层和数据库层。是数据库最大的杀手。还是存放一个url然后在调用吧!
反正,文件,二进制数这三样东西永远别存数据库。
以上就是关于c#如何将图片保存到mysql数据库,再读取出来全部的内容,包括:c#如何将图片保存到mysql数据库,再读取出来、读取保存在数据库里的图片JSP页面显示无法显示图片、怎么上传图片并插入MYSQL等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)