向数据库中保存不同类型的文件,和在数据库中保存是一样的。就是向数据库以byte形式存入
向数据库中保存不同类型的文件,和在数据库中保存是一样的。就是向数据库以byte形式存入
然后就是写入数据库,代码如下:
FileInfo fi = new FileInfo( txtFileNameText );// Replace with your file name
if ( fiExists
{
byte[] bData = null;
int nNewFileID = 0;
// Read file data into buffer
using ( FileStream fs = fiOpenRead() )
{
bData = new byte[fiLength];
int nReadLength = fsRead( bData,0, (int)(fiLength) );
}
// Add file info into DB
string strQuery = "INSERT INTO FileInfo "
+ " ( FileName, FullName, FileData ) "
+ " VALUES "
+ " ( @FileName, @FullName, @FileData ) "
+ " SELECT @@IDENTITY AS 'Identity'";
SqlCommand sqlComm = new SqlCommand( strQuery, sqlConn );
sqlCommParametersAdd( "@FileName", fiName );
sqlCommParametersAdd( "@FullName", fiFullName );
sqlCommParametersAdd( "@FileData", bData );
// Get new file ID
SqlDataReader sqlReader = sqlCommExecuteReader();
if( sqlReaderRead() )
{
nNewFileID = intParse(sqlReaderGetValue(0)ToString());
}
sqlReaderClose();
sqlCommDispose();
if( nNewFileID > 0 )
{
// Add new item in list view
ListViewItem itmNew = lsvFileInfoItemsAdd( fiName );
itmNewTag = nNewFileID;
}
}
4而读出的代码如下:
// Get new file name
string strFullName =
dlgFBSaveSelectedPath;
if( strFullName[strFullNameLength - 1] != '//'
)
strFullName
+= @"/";
strFullName +=
lsvFileInfoSelectedItems[0]Text;
string strQuery = "SELECT FileData FROM FileInfo
"
+
" WHERE FileID = " + lsvFileInfoSelectedItems[0]TagToString();
SqlDataAdapter
sqlDAdapter = new SqlDataAdapter(strQuery,sqlConn);
DataSet
sqlRecordSet = new DataSet();
byte[] bData = null;
//Get file data from DB
try
{
sqlDAdapterFill(
sqlRecordSet, "FileInfo" );
foreach( DataRow dr in sqlRecordSetTables["FileInfo"]Rows)
{
if( dr["FileData"] != DBNullValue )
bData
= ( byte[] )dr["FileData"];
}
}
catch(SqlException sqlErr)
{
MessageBoxShow(
sqlErrMessage );
}
catch
{
MessageBoxShow(
"Failed to read data from DB!" );
}
sqlRecordSetDispose();
sqlDAdapterDispose();
if( bData != null )
{
// Save file
FileInfo
fi = new FileInfo( strFullName
);
if( !fiExists )
{
//Create the file
using (FileStream fs = fiCreate())
{
fsWrite(
bData, 0, bDataLength);
}
}
else
{
//Create the file
using (FileStream fs =
fiOpenWrite())
{
fsWrite(
bData, 0, bDataLength);
}
}
}
ajax异步。
图1图2分别异步提交到后台。新名字的话也是后台处理的。存在空间里,把名存在数据库里。输出名到前台
前台图1图2后面可分别设一个隐藏的 input 用来ajax返回各自的名。
总的提交按钮只提交隐藏的input即可。(input里是名,可同时提交多个input)
暂无在第一次加载html时加载。每一次ajax上传除了返回名到对应的input外,还同时js动态输出新img标签代替对应的暂无,新img标签要写好完整的地址。
//--用自己的初始连接 初始一个SQL连接实体
MyDataSQLDataContext dbc = new MyDataSQLDataContext("Data Source=;Initial Catalog=TEXT;uid=sa;pwd=8888;");
DataSet ds = null;
string commads = "SELECT [name],[photo] FROM [TABE1]";
ds = dbcGetDataSet(commads);
if (ds != null && dsTablesCount > 0 && dsTables[0]RowsCount > 0)
{
for (int i = 0; i < dsTables[0]RowsCount; i++)
{
try
{
//--判断字段数据是否有数据且有照片流数据
if (((Byte[])dsTables[0]Rows[i]["photo"])Length > 0 && ((Byte[])dsTables[0]Rows[i]["photo"])Max() > 0)
{
byte[] aa = (Byte[])dsTables[0]Rows[i]["photo"];
Bitmap bit = new Bitmap(new SystemIOMemoryStream((Byte[])dsTables[0]Rows[i]["photo"]));
//--保存照片
pictureBox1Image = bit;
}
}
catch (Exception ex)
{ MessageBoxShow(exToString()); }
dsClear(); dsDispose();
}
}
试试
以上就是关于如何在数据库中同时保存文本和图片全部的内容,包括:如何在数据库中同时保存文本和图片、用aspupload如何同时上传两张图片,并以新命名的方式把路径保存到数据库求高手解决、使用C#读取SQL数据库中的图片等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)