0

我使用的是多上传输入控件,它不是服务器端的,即纯 HTML 不是 asp: 标记的。

现在问题出在服务器端,我正在尝试访问 Request 对象的 Files 集合,希望在上传后,输入控件会将文件放入有问题的集合中。

我什至在 javascript 中导入了一些脚本以使其工作,但每当我逐步执行后面的代码时,应包含浏览和选择的文件的 Request.Files 属性始终为空。我应该怎么办?哎呀!抱歉,我没有显示一些代码:

var x = this.Page.FindControl("FileUpload1");

            lbuploadmessage.Text = x.GetType().ToString();

          HttpFileCollection hfc = Request.Files; 
            List<L2SQLData.PatientFile> list = new List<L2SQLData.PatientFile>();
            for (int i = 0; i < hfc.Count; i++)
            {
                HttpPostedFile hpf = hfc[i];
                if (hpf.ContentLength > 0 && hpf.ContentLength < 1024000)
                {
                    string filename = Path.GetFileName(hpf.FileName);
                    string ext = Path.GetExtension(hpf.FileName);
                    var guidname = Guid.NewGuid().ToString();
                    //FileUpload1.SaveAs(Server.MapPath("~/Uploads/DocClerkings/") + guidname + ext);

                    hpf.SaveAs(Server.MapPath("~/Uploads/DocClerkings/") + guidname + ext );
                    lbuploadmessage.Text = "Upload status:" + hpf.FileName + " successfully uploaded!";

如您所见,我将控件命名为“FileUpload1”,但在运行时(调试)对象 x 为空,并且应该包含浏览文件的 Request.Files 集合也为空。多上传控件如下所示:

<input id = "FileUpload1" type="file" class="multi"/>

我添加了两个脚本,如下所示:

<script src="jquery-latest.js" type="text/javascript" language="javascript"></script>
<script src="jquery.MultiFile.js" type="text/javascript" language="javascript"></script>

那么我遗漏了什么?

干杯

4

2 回答 2

1

为了让它工作,你需要改变它

<asp:FileUpload ID="FileUpload1" runat="server" class="multi" />

该插件不显眼,并且知道class="multi"您希望它做某事......

有关如何使其工作的完整演练,请参阅http://www.dotnetcurry.com/ShowArticle.aspx?ID=317http://www.codeproject.com/KB/aspnet/multiple_file_upload.aspx

备注:您的使用不起作用,因为此插件不上传任何内容,它“仅”用于在客户端提供一些不错的添加 - 来自http://www.fyneworks.com/jquery/multiple-file-upload/#标签-上传

这个插件可以上传文件吗?

不,这个 jQuery 插件不会上传文件

于 2011-11-14T04:47:50.503 回答
0

我终于在http://docs.jquery.com/Tutorials:Multiple_File_Upload_Magic找到了缺失的链接

var fileMax = 3;

$("input[@type=file]").change(function(){
   doIt(this, fileMax);
 });

这些线条都是在设计师标记的。当然,服务器代码仍然与上述 Yahia 的解决方案中详述的相同——我接受它的原因:D。在这里-在上传按钮中放置:

HttpFileCollection hfc = Request.Files; 
        List<L2SQLData.PatientFile> list = new List<L2SQLData.PatientFile>();
        for (int i = 0; i < hfc.Count; i++)
        {
            HttpPostedFile hpf = hfc[i];
            if (hpf.ContentLength > 0 && hpf.ContentLength < 1024000)
            {
                string filename = Path.GetFileName(hpf.FileName);
                string ext = Path.GetExtension(hpf.FileName);
                var guidname = Guid.NewGuid().ToString();


     hpf.SaveAs(Server.MapPath("~/Uploads/DocClerkings/") + guidname + ext );
     lbuploadmessage.Text = "Upload status:" + hpf.FileName + " successfully uploaded!";

感谢 Yahia 和大家的帮助。Stack Overfolow 上的你们是最棒的!

于 2011-11-14T09:30:26.340 回答