C#winform 中上传图片保存到数据库中?
就是2中方法:
1:上传的相对路径到数据库中相应字段里,读取显示时,将控件(假设用的是Image控件)的ImageUrl属性指向该相对路径即可。
2:将以二进制流的方式整体上传到数据库里,读取显示时,以二进制流的方式整体读出。这种方法稍微麻烦一点,但保存的是整体到数据库里。
HTTPClient网上代码很多的 可以直接复制 然后再输入远程地址 另外在远程服务器那边写个Webservices 用于接收传过来的数据 很简单的 HTTPCLIENT里面的远程地址说白了就是调用远程服务器那边的这个WEBSERVICES
我不知道你在做什么项目哈 但是我知道一般用这种方法上传是用于基于WPF的silverlight上传和视频的方法 因为WPF是客户端 只有这种方法可以实现 其实还有很多方法的 思路是变化的 比如你可以把需要上传的转化为bitimage 然后将这个bitimage转化为byte[]类型传给服务器 服务器直接接受这个byte[] 然后服务器再将这个byte转化为就可以了 其实这只是一种方法而已 很多人给了他一个专业的术语 可以成为一种协议,很多做视频聊天 视频监控都可以用我说这种方法 本人亲测 CPU优化还算不错 用于商业项目是可以的
//这是一个上传的例子,上传其他文件都一样
string strFileFullName = SystemIOPathGetFileName(thisFileUpload1PostedFileFileName);
if (strFileFullNameLength > 0)
{
if (FileUpload1HasFile)
{
string newFileName = GetNewFileName(strFileFullName);
string path = ServerMapPath("[服务器端存储的路径]" + newFileName);
string pathSaveImg = ServerMapPath("[服务器端存储的路径]" + newFileName);
thisFileUpload1SaveAs(path);
[数据库字段]= "[服务器端存储的路径]" + newFileName;
}
else
{
MessageBoxShow(this, "找不到此"); return;
}
}
//跟据文件名产生一个由时间+随机数组成的一个新的文件名
//因为客户端上传的文件很可能会重名,所以要对文件名进行重命名
public static string GetNewFileName(string FileName)
{
Random rand = new Random();
string newfilename = DateTimeNowYearToString() + DateTimeNowMonthToString() + "m" +
DateTimeNowDayToString() + "d"
+ DateTimeNowSecondToString() + DateTimeNowMinuteToString()
+ DateTimeNowMillisecondToString()
+ "a" + randNext(1000)ToString()
+ FileNameSubstring(FileNameLastIndexOf(""), FileNameLength - FileNameLastIndexOf(""));
return newfilename;
}
不知道你对进行按比例缩小是指质量压缩还是尺寸变小
但是不管是哪一种改变, 这一步操作都可以放在程序中处理, 处理完成之后以流的方式存入数据库, 保存到数据库中是一串二进制数据, 建议保存的时候同时存储文件的格式, 为取出文件时做备用。
0条评论