所以我在页面上有一个表单。有几个文本输入字段等。现在还有一个jQuery文件上传控件,您可以在其中选择多个文件。我现在遇到的问题是我要求用户首先上传文件(使用jQuery控件),然后将这些文件保存在Session状态,直到常规表单发布其余的表单字段。然后我从Session中提取以前上传的文件并执行我需要做的事情。
所以基本上填写表单需要两个单独的POST操作回服务器。文件,然后是剩余的表单字段。
我认为必须有一种更好的方法让用户选择他/她的文件但不发布任何内容,直到用户提交主表单发布所有其他字段。我在这个网站上看过几篇帖子,但我找不到解决这个问题的帖子。
非常感谢任何建议/协助。
答案 0 :(得分:4)
我相信你可以使用Uploadify来做到这一点。您需要查看两个选项。首先,设置auto to false以防止立即加载所选文件。其次,使用formdata option发送您的其他表单字段以及有效负载。
当用户提交表单,上传队列中的每个文件并一次性发送表单数据时,您可以调用upload method。
服务器端部分:
您可能将表单提交到ASPX文件或ASHX处理程序。我更喜欢使用ASHX处理程序,因为它们更轻。两者都允许您访问HttpContext
或HttpRequest
对象。首先,您需要检查context.Request.Files.Count
以确保发布文件:
if (context.Request.Files.Count > 0) // We have files uploaded
{
var file = context.Request.Files[0]; // First file, but there could be others
// You can call file.SaveAs() to save the file, or file.InputString to access a stream
}
获取其他表单字段应该同样简单:
var formfield = context.Request["MyFormField"]; // Some form field
您还可以将结果写回客户端,例如任何结果错误的JSON编码描述:
context.Response.Write(response); // Anything you write here gets passed in to onUploadSuccess
我认为无论如何都应该让你开始!