使用Ajaxcall的VB.net FileUpload

时间:2015-01-29 10:24:43

标签: javascript ajax vb.net jqgrid

您好我有一个Jqgrid子网格。在里面,我有上传控制。

上传控件工作正常,直到要求文件并选择文件。

但是我无法读取后端vb.net端的文件值。

Javascript代码:
$('#FormPath')[0].files[0]将返回[object,file].
这意味着它能够读取文件。

                       var fd = new FormData();    
                       fd.append('file', $('#FormPath')[0].files[0]);
                    
                       $.ajax({
                           url: 'Forms.aspx/UploadFormDetails',
                           data: fd,
                           cache:false,
                           processData: false,
                           contentType: false,
                           type: 'POST',
                           success: function(fd){
                               alert(fd);
                           }
                       });

我的运气不好,它没有达到下面提到的代码。如果它命中我可能会读取该文件。 Vb.net代码

 <WebMethod> _
    Public Shared Function UploadFormDetails() As String

        Dim httpPostedFile = HttpContext.Current.Request.Files("UploadedFile")

        If httpPostedFile IsNot Nothing Then
            

            ' Get the complete file path
            Dim fileSavePath = Path.Combine(HttpContext.Current.Server.MapPath("/Attachments/pdf/Forms/"), httpPostedFile.FileName)

            ' Save the uploaded file to "UploadedFiles" folder
            httpPostedFile.SaveAs(fileSavePath)
        End If

       


        Return ""

    End Function

任何团体都有任何想法

1 个答案:

答案 0 :(得分:0)

可以按照以下链接上的说明进行操作:http://www.binaryintellect.net/articles/f2a2f1ee-e18a-416b-893e-883c800f83f4.aspx

“代替使用整页回发,您可以使用jQuery对服务器进行Ajax调用,然后将所选文件发布到通用处理程序(.ashx)。然后,通用处理程序可以将文件保存到指定的文件夹中。这篇文章的其余部分展示了如何实现这一目标。”

<script type="text/javascript">
$(document).ready(function () {
  $("#Button1").click(function (evt) {
    var fileUpload = $("#FileUpload1").get(0);
    var files = fileUpload.files;

    var data = new FormData();
    for (var i = 0; i < files.length; i++) {
      data.append(files[i].name, files[i]);
    }

    var options = {};
    options.url = "FileUploadHandler.ashx";
    options.type = "POST";
    options.data = data;
    options.contentType = false;
    options.processData = false;
    options.success = function (result) { alert(result); };
    options.error = function (err) { alert(err.statusText); };

   $.ajax(options);

   evt.preventDefault();
  });
});
</script>

然后在Handler文件中,您可以执行以下操作将POSTed文件保存到服务器中。

namespace jQueryFileUploadDemo
{
    public class FileUploadHandler : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            if (context.Request.Files.Count > 0)
            {
                HttpFileCollection files = context.Request.Files;
                for (int i = 0; i < files.Count;i++ )
                {
                    HttpPostedFile file = files[i];
                    string fname = context.Server.MapPath("~/uploads/" + file.FileName);
                    file.SaveAs(fname);
                }
            }
            context.Response.ContentType = "text/plain";
            context.Response.Write("File(s) Uploaded Successfully!");
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}