<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
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)