Http POST
ページへのリクエストを行うAndroidアプリケーションがありasp.net
ます。
このリクエストを受け取り、そのコンテンツをファイルに保存するasp.netページを実装したいと思います(ファイルのアップロードです)。
私にサンプルを与えることは非常に高く評価されます
asp.net
から画像を受け取るアプリケーションで、そのAndroid
ように受け取る単純なパラメーターについて、これを行う方法は次のとおりです
context.Request["Yourparameter"]
public class RecieveMail : IHttpHandler
{
private string _emailAdressTo;
private string _imageUrl;
private EmailFactory _emailFactory;
public void ProcessRequest(HttpContext context)
{
ImageFactory factory = new ImageFactory(context);
try
{
_imageUrl = factory.SaveImage("uploaded");
if (string.IsNullOrEmpty(context.Request["from"]) || string.IsNullOrEmpty(context.Request["to"])) return;
_emailFactory = new EmailFactory(_imageUrl);
if (_emailFactory.SendMail(context.Request["from"], context.Request["to"]))
context.Response.Write(!factory.DeleteImage(_imageUrl) ? "Email sent" : "Image deleted");
}
catch (Exception ex)
{
context.Response.Write(" error converting " + ex.Message);
}
}
public bool IsReusable
{
get
{
return false;
}
}
}
// ここに画像保存ファクトリーがあります
public class ImageFactory
{
private readonly HttpContext _context;
private Image _image;
public ImageFactory(HttpContext context)
{
_context = context;
}
/// <summary>
/// Get image by name from post
/// </summary>
/// <param name="ctxImageParamName">image that have been posted in email</param>
/// <returns></returns>
public string SaveImage(string ctxImageParamName)
{
if (string.IsNullOrEmpty(_context.Request[ctxImageParamName])) return null;
string url = GenerateImagePath("FrameMe");
ByteArrayToImageAndSave(Decode(_context.Request[ctxImageParamName]), url);
return url;
}
public bool DeleteImage(string url)
{
try
{
if (!File.Exists(url)) return false;
File.Delete(url);
return true;
}
catch (Exception ex)
{
return false;
}
}
private string GenerateImagePath(string directory)
{
return _context.Server.MapPath(string.Format("~/Images/{1}/Image1_{0}.jpg", DateTime.Now.ToString("ddMMyyyyHHmmss"), directory));
}
private void ByteArrayToImageAndSave(byte[] byteArrayIn, string imageUrl)
{
try
{
MemoryStream ms = new MemoryStream(byteArrayIn);
_image = Image.FromStream(ms);
_image.Save(imageUrl, new ImageFormat(Guid.NewGuid()));
_image.Dispose();
}
catch (Exception ex)
{
_image = null;
}
}
private byte[] Decode(string str)
{
return Convert.FromBase64String(str);
}
}
asp.netのRequestオブジェクトを使用して、ページに投稿された情報を取得します。
例えば:
Request.Form["NameOfVar"]