高分请教SQL Server 2005 如何处理附件? 1. 如何存储小的附件?(8K以内的)2. 如何存储大附件? (8K以上的) 用什么字段来存?各种方法有什么优缺点?3. 如何下载以上两种附件? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 4. 如何实现断点续传?5. 2005 新增加了XML字段,该字段是否能存储附件?如果能存储,有什么优缺点? 如果是存在binary或者image这样的字段里面,事实上也只是在表中存个指针,附件存放的物理位置还是在别的地方。你说的这种方法和上面这种方法比优势在哪里呢?如何保证存放附件的安全性? sql server本身就不怎么安全存個路徑,加密好了附件存的物理位置,那是OS層面的安全性了 谢谢!这种方式和直接存在数据库里面比有什么优缺点呢?另外,下面两个问题能否解答一下?谢谢! (ASP.Net)4. 如何实现断点续传? 5. 2005 新增加了XML字段,该字段是否能存储附件?如果能存储,有什么优缺点? 另外,如果附件比较小,我想存在binary字段里面,能用sql语句实现吗?怎么实现呢?谢谢 //将图片转成二进制 private void UploadImage() {//保存图片到数据库 Int32 intFile = this.ProImage.PostedFile.ContentLength; try { Byte[] PhotoArray = new Byte[intFile]; //在些处将图片转为二进制 String physicPath = Server.MapPath("~/upload/"); //文件所在服务器的相对路径 String filePath = this.ProImage.PostedFile.FileName; //文件所在服务器的物理路径 String fileExt = filePath.Substring(filePath.LastIndexOf(".")); //文件扩展名 //String FileNme = this.ProImage. UploadImageName = common.UpLoadAndSave(PhotoArray, fileExt, "upload/", physicPath); UploadImageName = "upload/" + UploadImageName; MessageBox.Show(this, "文件上传成功!"); } catch (FileNotFoundException ex) { throw ex; } }/// <summary> /// 文件上传 /// </summary> /// <param name="data">文件数据流</param> /// <param name="fileExt">文件扩展名</param> /// <param name="virPath">文件所在服务器的相对路径,不包括文件名</param> /// <param name="physicPath">文件所在服务器的物理路径,不包括文件名</param> /// <returns>文件名</returns> public static string UpLoadAndSave(byte[] data, string fileExt, string virPath, string physicPath) { // 返回文件物理地址,修改虚拟地址 if (data == null || virPath == null || fileExt == null || physicPath == "") { throw new Exception(" 非法参数"); } return SaveToServer(data, fileExt, physicPath, data.Length); }//将二进制图片转换成jpg格式 //C# codevoid savejpg(String NAME) { SqlConnection CON = new SqlConnection(); SqlCommand CMD = new SqlCommand("SQL"); FileStream fs; BinaryWriter bw; int bufferSize = 1024; byte[] outbyte = new byte[bufferSize]; long retval; long startIndex = 0; CON.Open(); SqlDataReader myReader = CMD.ExecuteReader(CommandBehavior.SequentialAccess); while (myReader.Read()) { fs = new FileStream(NAME, FileMode.OpenOrCreate, FileAccess.Write); bw = new BinaryWriter(fs); startIndex = 0; retval = myReader.GetBytes(0, startIndex, outbyte, 0, bufferSize); while (retval > 0) { bw.Write(outbyte); bw.Flush(); startIndex += bufferSize; retval = myReader.GetBytes(0, startIndex, outbyte, 0, bufferSize); } bw.Write(outbyte); bw.Flush(); bw.Close(); fs.Close(); } myReader.Close(); CON.Close(); } 谢谢!你给的上面的这种方法就是存在物理路径的吧?能把SaveToServer也贴上来吗?多谢!return SaveToServer(data, fileExt, physicPath, data.Length); 谢谢!你给的上面的这种方法就是存在物理路径的吧?能把SaveToServer也贴上来吗?多谢!return SaveToServer(data, fileExt, physicPath, data.Length); sql语句问题 这个语句怎么简化 一个子查询的问题 数据库大小增长限制问题 棘手问题 急啊 关于sql2000远程连接掉线问题 关于SQL组合查询中如何实现类别循环的问题 拜托大家,快帮忙啊。。远程连接SQLSERVER问题 数据库恢复求救, 哪里有sql server2000的电子书下载,高分相送 问一个最简单的触发器 Sql数据类型Decimal问题
5. 2005 新增加了XML字段,该字段是否能存储附件?如果能存储,有什么优缺点?
你说的这种方法和上面这种方法比优势在哪里呢?如何保证存放附件的安全性?
存個路徑,加密好了
附件存的物理位置,那是OS層面的安全性了
另外,下面两个问题能否解答一下?谢谢! (ASP.Net)
4. 如何实现断点续传?
5. 2005 新增加了XML字段,该字段是否能存储附件?如果能存储,有什么优缺点?
//将图片转成二进制
private void UploadImage()
{//保存图片到数据库
Int32 intFile = this.ProImage.PostedFile.ContentLength;
try
{
Byte[] PhotoArray = new Byte[intFile]; //在些处将图片转为二进制 String physicPath = Server.MapPath("~/upload/"); //文件所在服务器的相对路径
String filePath = this.ProImage.PostedFile.FileName; //文件所在服务器的物理路径
String fileExt = filePath.Substring(filePath.LastIndexOf(".")); //文件扩展名 //String FileNme = this.ProImage.
UploadImageName = common.UpLoadAndSave(PhotoArray, fileExt, "upload/", physicPath);
UploadImageName = "upload/" + UploadImageName;
MessageBox.Show(this, "文件上传成功!");
}
catch (FileNotFoundException ex)
{
throw ex;
}
}
/// <summary>
/// 文件上传
/// </summary>
/// <param name="data">文件数据流</param>
/// <param name="fileExt">文件扩展名</param>
/// <param name="virPath">文件所在服务器的相对路径,不包括文件名</param>
/// <param name="physicPath">文件所在服务器的物理路径,不包括文件名</param>
/// <returns>文件名</returns>
public static string UpLoadAndSave(byte[] data, string fileExt, string virPath, string physicPath)
{
// 返回文件物理地址,修改虚拟地址
if (data == null || virPath == null || fileExt == null || physicPath == "")
{
throw new Exception(" 非法参数");
} return SaveToServer(data, fileExt, physicPath, data.Length);
}//将二进制图片转换成jpg格式 //C# codevoid savejpg(String NAME)
{
SqlConnection CON = new SqlConnection();
SqlCommand CMD = new SqlCommand("SQL"); FileStream fs;
BinaryWriter bw; int bufferSize = 1024;
byte[] outbyte = new byte[bufferSize];
long retval;
long startIndex = 0; CON.Open();
SqlDataReader myReader = CMD.ExecuteReader(CommandBehavior.SequentialAccess); while (myReader.Read())
{
fs = new FileStream(NAME, FileMode.OpenOrCreate, FileAccess.Write);
bw = new BinaryWriter(fs); startIndex = 0;
retval = myReader.GetBytes(0, startIndex, outbyte, 0, bufferSize); while (retval > 0)
{
bw.Write(outbyte);
bw.Flush();
startIndex += bufferSize;
retval = myReader.GetBytes(0, startIndex, outbyte, 0, bufferSize);
} bw.Write(outbyte);
bw.Flush(); bw.Close();
fs.Close();
} myReader.Close();
CON.Close(); }
能把SaveToServer也贴上来吗?多谢!
return SaveToServer(data, fileExt, physicPath, data.Length);
能把SaveToServer也贴上来吗?多谢!
return SaveToServer(data, fileExt, physicPath, data.Length);