вызов веб-сервиса без добавления веб-ссылки
Здравствуйте разработчики,
Я работаю на сайте, где я загружаю изображение с именем, и этот загруженный файл должен храниться на другом сайте. www.abc.com это нужно хранить внутри www.xyz.com файловая система. Короче говоря, это междоменная проблема, над которой я работаю.
я использовал веб-сервис с параметром querysting для достижения этой цели, но querysting имеет ограничение, поэтому всякий раз, когда я отправляю изображение bytearray, он не может отправить все изображение из-за его ограничения.
мне нужен другой способ решить эту проблему, пожалуйста, предложите мне способ решить эту проблему.
одна важная вещь здесь я не могу добавить webreference, потому что одно и то же решение имеет несколько выходных instatnces, поэтому я использую веб-сервис без какой-либо ссылки, добавленной в мое решение. Еще одна вещь, не предлагайте мне использовать вызов ftp-клиента, потому что он принимает creadential, который я не могу использовать.
мне нужна структура метода webservice, которая принимает два параметра и код, вызывающий этот webmethod и передающий эти два параметра без добавления каких-либо ссылок.
пожалуйста, помогите мне.
мой код таков :
[webmethod] public int StoreImage() { try { if (System.Web.HttpContext.Current.Request.QueryString["filename"] != null && System.Web.HttpContext.Current.Request.QueryString["imgByte"] != null) { Byte[] imgbyte = Encoding.ASCII.GetBytes(System.Web.HttpContext.Current.Request.QueryString["imgByte"].ToString()); System.IO.File.WriteAllBytes(Server.MapPath("\\images\\BannerImages\\") + System.Web.HttpContext.Current.Request.QueryString["filename"].ToString(), imgbyte); return 1; } else { return 0; } } catch { return 0; } } [page code that call my webmethod] string filename = fileuploader1.FileName; Byte[] imgByte = null; if (fileuploader1.HasFile && fileuploader1.PostedFile != null) { //To create a PostedFile HttpPostedFile File = fileuploader1.PostedFile; //Create byte Array with file len imgByte = new Byte[File.ContentLength]; //force the control to load data in array File.InputStream.Read(imgByte, 0, File.ContentLength); } string ServeurURL = "http://xyz/SaveBannerImages.asmx/StoreImage?filename=" + filename + "&imgByte=" + imgByte; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(ServeurURL); request.ContentType = "text/xml"; request.Method = "POST"; using (System.IO.Stream stream = request.GetRequestStream()) { byte[] arrBytes = imgByte; stream.Write(arrBytes, 0, arrBytes.Length); } // Get the response WebResponse response = null; try { response = request.GetResponse(); using (Stream stream = response.GetResponseStream()) { using (StreamReader rdr = new StreamReader(stream, System.Text.Encoding.UTF8)) { // Deserialize the response string strResponse = rdr.ReadToEnd(); idmsg.Text = strResponse; } } } catch { throw; } finally { if (response != null) { response.Close(); response = null; } }
приведенный выше код работает, но в запросе я не могу отправить массив байтов изображения. так что, пожалуйста, предложите мне эффективный способ сделать это.