我如何使用jquery ajax和wcf rest服务上传文件

时间:2013-06-20 05:03:47

标签: jquery wcf-rest

    Hello All,
      how i can upload file using jquery ajax i am trying to send this parameter to wcf rest service but its not working. 

here is the ajax code where i am passing file name and file object.


enter code here

  $.ajax({
            url: "http://localhost:1340/b/SaveProjectDocument/" + file.name + "/" + file,
                        data: null,
                        type: "POST",
                        contentType: "application/javascript",
                        dataType: "jsonp",
                        error: function () {
                            alert("Failed!");
                        },
                        success: function () {
                            $("#divLoadingEdit").hide();
                        }                  
                    });

这里是wcf代码,我从字符串中的jquery和文件对象中检索数据并转换为流。使用下面的代码我可以存储文件,但字节存储不正确。请尽快告诉我它有什么问题。

[WebInvoke(Method = "POST",
                   ResponseFormat = WebMessageFormat.Json,
                  UriTemplate = "SaveProjectDocument/{filename}/{fileContents}")]
 public void SaveProjectDocument(string filename, string fileContents)
        {
            try
            {
//converting string into stream.
                //byte[] byteArray = Encoding.UTF8.GetBytes(fileContents);
                byte[] byteArray = Encoding.ASCII.GetBytes(fileContents);
                MemoryStream stream = new MemoryStream(byteArray);

//reading stream and assign new memory to byte array.
                byte[] buffer = new byte[stream.Length];               
                int count = 0;
                FileStream fileToupload = new FileStream(System.Web.HttpContext.Current.Server.MapPath("~/Files/") + filename, FileMode.Create, FileAccess.ReadWrite);
                while (count < stream.Length)
                {
                    buffer[count++] = Convert.ToByte(stream.ReadByte());
                }

                fileToupload.Write(buffer, 0, buffer.Length);
                fileToupload.Close();
                fileToupload.Dispose();


            }
            catch (Exception ex)
            {`enter code here`
                ///return 0;
            }
        }

0 个答案:

没有答案