上传图片到SQL数据库,在本机和局域网测试无问题,发布到外网就上传不了,跪求大虾帮忙~
在VS下编译测试无问题,在本机用IIS7发布,用局域网测试也无问题,但是发布到外网服务器上后(IIS6),点击确定,就不会弹出“上传成功”,数据库内也无上传的图片,这是什么原因啊?代码如下:
public partial class users_ba_upload : System.Web.UI.Page
{
//protected System.Web.UI.WebControls.Button btnSubmit;
//protected System.Web.UI.HtmlControls.HtmlInputFile myFile;
private Int32 FileLength = 0;//有可能图片的大小会超出INT的范围,所以声明为Int32,当然这和下面大小的判断有关系
private string con = "server=(local);uid=sa;pwd=123;database=eisfiles_bz2";
private string con1 = "server=(local);uid=sa;pwd=123;database=eistdoc_bz";
public string bargain_no = "";
protected void Page_Load(object sender, EventArgs e)
{
//获得楼编号
bargain_no = Request.QueryString["bargain_no"];
if (bargain_no == null || bargain_no == String.Empty)
{
return;
}
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.btnSubmit.Click += new System.EventHandler(this.btnSubmit_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void btnSubmit_Click(object sender, System.EventArgs e)
{
try
{
SqlConnection conn1 = new SqlConnection(con1);
SqlConnection conn = new SqlConnection(con);
string FileName = myFile.Value;
HttpPostedFile UpFile = myFile.PostedFile;//获取对由客户端指定的上传文件的访问
FileLength = UpFile.ContentLength;//获取上传文件的字节大小
if (FileLength == 0)
{
Response.Write("<script>alert('对不起,请选择要上传的图片')</script>");
return;
}
string exName = FileName.Substring(FileName.LastIndexOf(".") + 1).ToUpper();//截取图片的后缀名
if (exName == "JPG" || exName == "BMP" || exName == "GIF")//判断图片的类型
{
if (FileLength > 496000)//判断图片是否大于400k(根据自己的需要判断大小)
{
Response.Write("<script>alert('对不起,图片大小不能大于400K')</script>");
return;
}
else
{
string ImageName = "合同签字";//图片名称设置为保存的时间
Byte[] FileByte = new Byte[FileLength]; //图象文件储存到数组
Stream ObjectStream = UpFile.InputStream;//建立数据流对像,获取一个 Stream 对象,该对象指向一个上载文件,以准备读取该文件的内容。
ObjectStream.Read(FileByte, 0, FileLength); //读取图象文件数据
string StrSql = "Insert Into Files (FileBody,FileName,keycode,subkeycode)Values(@Image,@ImageName,@keycode,@subkeycode)";
string StrSql1 = "update PO_Records set signature=1";
SqlCommand Cmd = new SqlCommand(StrSql, conn);
SqlCommand Cmd1 = new SqlCommand(StrSql1, conn1);
Cmd.Parameters.Add("@Image", SqlDbType.Binary, FileLength).Value = FileByte;
Cmd.Parameters.Add("@ImageName", SqlDbType.VarChar, 150).Value = ImageName;
Cmd.Parameters.Add("@keycode", SqlDbType.VarChar, 20).Value = bargain_no;
Cmd.Parameters.Add("@subkeycode", SqlDbType.VarChar, 10).Value = 0;
conn.Open();
Cmd.ExecuteNonQuery();
conn.Close();
conn1.Open();
Cmd1.ExecuteNonQuery();
conn1.Close();
Response.Write("<script>alert('图片上传成功')</script>");
}
}
else
{
Response.Write("<script>alert('对不起,请选择正确的的图片')</script>");
return;
}
}
catch (Exception ex)
{
Response.Write("<script>alert('" + ex.Message + "')</script>");
}
}
} --------------------编程问答-------------------- 查服务器上上传文件夹的权限。。
--------------------编程问答-------------------- 查看权限! --------------------编程问答-------------------- 我有点不明白,这个代码是直接把图片转换成2进制写进服务器的SQL数据库里image类型的字段,不是把图片直接保存在某个文件夹里啊,而且发布的整个网站的文件夹,我都给权限了,every one和network service都给了 --------------------编程问答-------------------- 嗯,我也没看出问题来
换个类型试试
Cmd.Parameters.Add("@Image", SqlDbType.Image).Value = FileByte;
--------------------编程问答-------------------- 建议你单独捕获下执行Cmd.ExecuteNonQuery();时有没什么异常
--------------------编程问答-------------------- 可能是服务器 支持的问题了 --------------------编程问答-------------------- 问空间商,痛骂。。。
补充:.NET技术 , ASP.NET