jquery结合ashx实现文件无刷新上传,为什么ashx中获取不到httppostedfile对象。。。

xueling 2011-08-10 07:14:24
如代码:
html内容:
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
<script type="text/javascript" src="js/jquery-1.6.js"></script>
<script type="text/javascript">
$(function(){
$("#file").change(function(){
$.post("handler1.ashx",{fileName:$("#file").val()},function(){
alert("上传成功!");
})
})
})
</script>
</head>
<body>
<form id="form1" runat="server" enctype="multipart/form-data">
<div>
<input type="file" id="file" name="file" />
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="btnClick" />
</div>
</form>
</body>
</html>



ashx内容:
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
context.Response.Write("Hello World");

string origin_fileName = context.Request["fileName"];
string fileName = System.IO.Path.GetFileName(origin_fileName);

string rela_Path = @"~\UserUpload\"+fileName;

string abso_Path = context.Server.MapPath(rela_Path);

HttpPostedFile file = context.Request.Files["file"];


}



file 为null。。。
郁闷-------
...全文
1169 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
honkerhero 2011-08-11
  • 打赏
  • 举报
回复
jQuery有个第三方的AJAX上传控件,是通过隐式的创建iframe和form提交的, 文件只能通过form提交,普通提交是上传不了的
huangwenquan123 2011-08-11
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 xueling2987 的回复:]
引用 9 楼 huangwenquan123 的回复:
如果你想实现无刷新而且不用其他组件或flash的话
你可以post到你的ashx文件,target到iframe的name
用的时候iframe嵌套你的上传页面

target到iframe的name是什么意思?? 可以给个demo吗?? 谢谢!!
[/Quote]像孟老大写的那样,你可以加个action指到你的ashx文件中
Lay 2011-08-11
  • 打赏
  • 举报
回复
学习学习
moxcm 2011-08-11
  • 打赏
  • 举报
回复
.post只提交了一个值,你必须使用form来提交才行
孟子E章 2011-08-11
  • 打赏
  • 举报
回复
无刷新上传,何必使用jq呢?
<body>
<form id="form1" runat="server" target="ddd" enctype="multipart/form-data">
<div>
<input type="file" id="file" name="file" />
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="btnClick" />
</div>
</form>
<iframe name=ddd style="display:none"></iframe>
</body>

即可
xueling 2011-08-11
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 huangwenquan123 的回复:]
如果你想实现无刷新而且不用其他组件或flash的话
你可以post到你的ashx文件,target到iframe的name
用的时候iframe嵌套你的上传页面
[/Quote]
target到iframe的name是什么意思?? 可以给个demo吗?? 谢谢!!
huangwenquan123 2011-08-11
  • 打赏
  • 举报
回复
如果你想实现无刷新而且不用其他组件或flash的话
你可以post到你的ashx文件,target到iframe的name
用的时候iframe嵌套你的上传页面
xueling 2011-08-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 net_lover 的回复:]
你提交的数据只有{fileName:$("#file").val()} 文件名,文件内容并并没有提交上去啊
[/Quote]
通过context进行request不可以吗??
xueling 2011-08-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 net_lover 的回复:]
你提交的数据只有{fileName:$("#file").val()} 文件名,文件内容并并没有提交上去啊
[/Quote]
我现在该怎么把文件内容(httppostedFile实例)提交到ashx中呢???
xueling 2011-08-11
  • 打赏
  • 举报
回复
谢谢各位大牛的指导 ---
白云任去留 2011-08-10
  • 打赏
  • 举报
回复
没看仔细,楼主这样做是上传不了的,要么使用swfupload或者楼上所说Uploadify进行无刷新上传
子夜__ 2011-08-10
  • 打赏
  • 举报
回复
<body> 
<form id="form1" runat="server">
<div>
<table style="width: 343px">
<tr>
<td style="width: 100px">
多文件上传</td>
<td style="width: 100px">
</td>
</tr>
<tr>
<td style="width: 100px">
<asp:FileUpload ID="FileUpload1" runat="server" Width="475px" />
</td>
<td style="width: 100px">
</td>
</tr>
<tr>
<td style="width: 100px">
<asp:FileUpload ID="FileUpload2" runat="server" Width="475px" /></td>
<td style="width: 100px">
</td>
</tr>
<tr>
<td style="width: 100px">
<asp:FileUpload ID="FileUpload3" runat="server" Width="475px" /></td>
<td style="width: 100px">
</td>
</tr>
<tr>
<td style="width: 100px">
<asp:Button ID="bt_upload" runat="server" OnClick="bt_upload_Click" Text="一起上传" />
<asp:Label ID="lb_info" runat="server" ForeColor="Red" Width="448px"></asp:Label></td>
<td style="width: 100px">
</td>
</tr>
</table>
</div>
</form>
</body>


using System; 
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}
protected void bt_upload_Click(object sender, EventArgs e)
{
if (FileUpload1.PostedFile.FileName == "" && FileUpload2.PostedFile.FileName == "" && FileUpload3.PostedFile.FileName == "")
{
this.lb_info.Text = "请选择文件!";
}
else
{
HttpFileCollection myfiles = Request.Files;
for (int i = 0; i < myfiles.Count; i++)
{
HttpPostedFile mypost = myfiles[i];
try
{
if (mypost.ContentLength > 0)
{
string filepath = mypost.FileName;//C:\Documents and Settings\Administrator\My Documents\My Pictures\20022775_m.jpg
string filename = filepath.Substring(filepath.LastIndexOf("\\") + 1);//20022775_m.jpg
string serverpath = Server.MapPath("~/images/") + filename;//C:\Inetpub\wwwroot\WebSite2\images\20022775_m.jpg
mypost.SaveAs(serverpath);
this.lb_info.Text = "上传成功!";
}
}
catch (Exception ex)
{
this.lb_info.Text = "上传发生错误!原因:" + ex.Message.ToString();
}
}
}
}
}


jquery 批量上传插件Uploadify
参考
  • 打赏
  • 举报
回复
想Request.Files方法,你还是要找那些基于ActiveX、Flash、Siverlight插件而实现的上传组件,纯粹的javascript是做不到的。
  • 打赏
  • 举报
回复
val()根本不支持文件内容,jquery中也没有这方面的设计去支持httppostedfile对象。
孟子E章 2011-08-10
  • 打赏
  • 举报
回复
你提交的数据只有{fileName:$("#file").val()} 文件名,文件内容并并没有提交上去啊
白云任去留 2011-08-10
  • 打赏
  • 举报
回复
context.Request.Files[0].SaveAs(path);

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧