将网站图片保存到sqlserver数据库,提示“不是有效的虚拟路径”,但文件明明就在那里,路径完全正确,权限也增加了,不知是什么原因。
代码如下:
[WebMethod]
public int savetosql(String filename,String sort, int sort_id, String memo)
{
//String newFile = HttpContext.Current.Server.MapPath("upload/" + filename);
String newFile = Server.MapPath("~/upload") + "\\" + filename;
try
{
//FileStream fs = File.OpenRead(newFile);
FileStream fs = new FileStream(Server.MapPath(newFile), FileMode.Open, FileAccess.Read);
byte[] FileData = new byte[fs.Length];
fs.Read(FileData, 0, FileData.Length); string constr = ConfigurationManager.ConnectionStrings["DBConnectionString"].ConnectionString;
SqlConnection con = new SqlConnection(constr);
con.Open();
SqlCommand com = new SqlCommand("INSERT INTO photo(sort,sort_id,img,memo)"
+ " VALUES (@sort,@sort_id,@img,@memo)", con);
com.Parameters.Add("@img", SqlDbType.Image);
com.Parameters["@img"].Value = FileData;
com.Parameters.Add("@sort", SqlDbType.VarChar);
com.Parameters["@sort"].Value = sort;
com.Parameters.Add("@sort_id", SqlDbType.Int);
com.Parameters["@sort_id"].Value = sort_id;
com.Parameters.Add("@memo", SqlDbType.VarChar);
com.Parameters["@memo"].Value = memo;
try
{
com.ExecuteNonQuery();
fs.Close();
return 0;
}
catch (Exception e)
{
fs.Close();
return -1;
} }
代码如下:
[WebMethod]
public int savetosql(String filename,String sort, int sort_id, String memo)
{
//String newFile = HttpContext.Current.Server.MapPath("upload/" + filename);
String newFile = Server.MapPath("~/upload") + "\\" + filename;
try
{
//FileStream fs = File.OpenRead(newFile);
FileStream fs = new FileStream(Server.MapPath(newFile), FileMode.Open, FileAccess.Read);
byte[] FileData = new byte[fs.Length];
fs.Read(FileData, 0, FileData.Length); string constr = ConfigurationManager.ConnectionStrings["DBConnectionString"].ConnectionString;
SqlConnection con = new SqlConnection(constr);
con.Open();
SqlCommand com = new SqlCommand("INSERT INTO photo(sort,sort_id,img,memo)"
+ " VALUES (@sort,@sort_id,@img,@memo)", con);
com.Parameters.Add("@img", SqlDbType.Image);
com.Parameters["@img"].Value = FileData;
com.Parameters.Add("@sort", SqlDbType.VarChar);
com.Parameters["@sort"].Value = sort;
com.Parameters.Add("@sort_id", SqlDbType.Int);
com.Parameters["@sort_id"].Value = sort_id;
com.Parameters.Add("@memo", SqlDbType.VarChar);
com.Parameters["@memo"].Value = memo;
try
{
com.ExecuteNonQuery();
fs.Close();
return 0;
}
catch (Exception e)
{
fs.Close();
return -1;
} }
FileStream fs = new FileStream(Server.MapPath(newFile), FileMode.Open, FileAccess.Read);
修改成
FileStream fs = new FileStream(newFile, FileMode.Open, FileAccess.Read);
现在的提示是“未能找到文件 d:\test\upload\tmp.jpg”,但是这个文件的确存在(直接拷贝提示中的文件路径到IE可以显示图片)
请问什么原因。