ajax+ashx上传文件到服务器保存数据到数据库

ajax+ashx上传文件到服务器保存数据到数据库,第1张

第一:建立Default.aspx页面

<html>

<head runat="server">

<title>ajax图片上传</title>

<script src="js/jquery-1.3.2.min.js" type="text/javascript"></script>

<script src="js/jquery.form.js" type="text/javascript"></script>

<script type="text/javascript">

function upload(){

var path = document.getElementById("File1").value

var img = document.getElementById("img1")

if($.trim(path)==""){

alert("请选择要上传的文件")

return

}

$("#form1").ajaxSubmit({

success: function (str) {

if(str!=null &&str!="undefined"){

if (str == "1") {alert("上传成功")document.getElementById("img1").src="images/logo.jpg?"+new Date()/*上传后刷新图片*/}

else if(str=="2"){alert("只能上传jpg格式的图片")}

else if(str=="3"){alert("图片不能大于1M")}

else if(str=="4"){alert("请选择要上传的文件")}

else {alert(' *** 作失败!')}

}

else alert(' *** 作失败!')

},

error: function (error) {alert(error)},

url:'Handler.ashx', /*设置post提交到的页面*/

type: "post", /*设置表单以post方法提交*/

dataType: "text" /*设置返回值类型为文本*/

})

}

</script>

</head>

<body>

<form id="form1" runat="server">

<input id="File1" name="File1" type="file" />

<input id="iptUp" type="button" value="上传Logo" onclick="upload()"/>

<img id="img1" alt="网站Logo" src="images/weblogo.jpg" />

</form>

</body>

</html>

void btnAdd_Click(Object s, EventArgs e){

if (UpFile.HasFile){//判断是否存在文件

if (CheckFileType(UpFile.FileName)){//判断文件类型

AddFile(UpFile.FileName, UpFile.FileContent)//调用AddFile方法

rptFiles.DataBind()}//数据绑定

}

}

///方法AddFile

///输入参数:文件名fileName,文件流upload

///输出参数:无

private void AddFile(string fileName, System.IO.Stream upload)

{

SqlConnection con = new SqlConnection(...)//新建数据库连接

SqlCommand cmd = new SqlCommand("INSERT File (FileName) Values (@FileName"+"SELECT @Identity=SCOPE_IDENTITY()", con)//

cmd.Parameters.AddWithValue("@FileName",fileName)//参数赋值

SqlParameter idParm = cmd.Parameters.Add("Identity",SqlDbType.Int)

idParm.Direction = ParameterDirection.Output

using (con){//使用using进行垃圾回收

con.Open()//打开数据库连接

cmd.ExecuteNonQuery()//执行插入语句

int newFileId = (int)idParm.Value//将idParm的值转换成整形并赋值给newFileID

StoreFile(newFileId,upload, con)//调用保存文件方法

}

}

///保存文件方法StoreFile

///输入参数:文件编号fileID,文件流upload,连接命令connection

/// 输入参数:无

private void StoreFile(int fileId, Stream upload, SqlCommand connection) {

int bufferLen = 8040//声明变量bufferLen并赋值8040

BinaryReader br = new BinaryReader(upload)//实例化二进制读取器,读取upload流

byte[] chunk = br.ReadBytes(bufferLen)//从流中读入bufferLen个字节数组,并使当前位置提升bufferLen,存入chunk数组中

SqlCommand cmd = new SqlCommand("UPDATE File SET FileBytes=@Buffer WHERE FileId=@FileId", connection)

cmd.Parameters.AddWithValue(@FileId, fileId)//参数赋值

cmd.Parameters.Add("@Buffer", SqlDbType.VarBinary, bufferLen).Value = chunk//参数赋值

cmd.ExecuteNonQuery()//执行更新语句

SqlCommand cmdAppend = new SqlCommand("UPDATE File SET FileBytes .WRITE(Buffer,Null,0) WHERE FileId=@FileId", connection)

cmdAppend.Parameters.AddWithValue("@FileID", fileId)

cmdAppend.Parameters.Add("Buffer", SqlDbType.VarBinary, bufferLen)

chunk = br.ReadBytes(bufferLen)

while (chunk.Length >0){//循环读取数据流

cmdAppend.Parameters["@Buffer"].Value = chunk

cmdAppend.ExecuteNonQuery()

chunk = br.ReadBytes(bufferLen)

}

br.Close()//关闭BinaryReader

}

另外,虚机团上产品团购,超级便宜

刚才就看到你那个问题了的,写好代码后发现已经采纳了。把rbtn的值传到ashx之后,ashx接收了就可以存入数据库啦,insert或者update都行,只要返回受影响行数大于0,那就成功了,判断成功状态后返回数据库获取的值,前台jq接收后直接赋值到label上就可以了。给你看看我刚才写的,ashx里面就写了获取前台发过去的值后就返回了,拿到这个值再对数据库 *** 作那部分就不用再写一次了吧,ADO.NET熟悉不?你先看看,不懂再问

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

<meta http-equiv="Content-Type" content="text/htmlcharset=utf-8" />

<title></title>

<script src="jquery-2.1.0.min.js"></script>

<script type="text/javascript">

$(document).ready(function () {

//用Jquery实现

$("#rbtnA").click(function () {

$("#lblFirst").html($(this).val())

$("#lblSecond").html("Label2")

})

$("#rbtnB").click(function() {

$("#lblSecond").html($(this).val())

$("#lblFirst").html("Label1")

})

//-----------------

//用Ajax实现

$("#Radio1").click(function () {

$.post("Handler1.ashx?rbtnValue=" + $(this).val(), function (data) {

$("#Label1").html(data)

$("#Label2").html("Label2")

})

})

$("#Radio2").click(function () {

$.post("Handler1.ashx?rbtnValue=" + $(this).val(), function (data) {

$("#Label2").html(data)

$("#Label1").html("Label1")

})

})

//------------------

})

</script>

</head>

<body>

<form id="form1" runat="server">

<div style="background: #eee">

用Jquery实现

<br />

<label id="lblFirst">Label1 </label>

<input type="radio" value="A" id="rbtnA" checked="checked" name="changeAB1" />

<br />

<label id="lblSecond">Label2 </label>

<input type="radio" value="B" id="rbtnB" checked="" name="changeAB1" />

</div>

<div>

用Ajax实现

<br />

<label id="Label1">Label1 </label>

<input type="radio" value="A" id="Radio1" checked="checked" name="changeAB2" />

<br />

<label id="Label2">Label2 </label>

<input type="radio" value="B" id="Radio2" checked="" name="changeAB2" />

</div>

</form>

</body>

</html>

.ashx部分

public class Handler1 : IHttpHandler

{

public void ProcessRequest(HttpContext context)

{

context.Response.ContentType = "text/plain"

string rbtnValue = context.Request.QueryString["rbtnValue"]

context.Response.Write(rbtnValue)

}

public bool IsReusable

{

get

{

return false

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9986074.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存