私はグーグルとスタックオーバーフローでたくさん検索しましたが、私のために働く満足のいく解決策を得ることができませんでした。
拡張子.ashxで終わる特定のURLに画像をアップロードする必要があります。PHPサーバーにアップロードする方法を見てきましたが、ここでは何の手がかりも得られません。
サンプルコードを提供してください。
私の理解によると、aspxはページであり、.ashxは文字列形式で出力に応答するコードファイルであり、.ashxファイルはWebハンドラーです。Webハンドラファイルはaspxファイルと同じように機能します。
したがって、.ashxは.aspxと同じであると見なすと、このコードは機能するはずです(.aspxページで実行されています)。これは.netサーバーにリクエストを送信しています。
iOS
UIImage *img = [UIImage imageNamed:@"test.png"];
NSData *imageData = UIImageJPEGRepresentation ( img , 90 );
NSString *urlString =@"www.xyz.com/ImageUpload.aspx?filename=test";
NSLog(@"IMAGE_UPLOAD_URL -------------> %@",urlString);
NSMutableURLRequest *request = [[[ NSMutableURLRequest alloc ] init ] autorelease ];
[request setURL :[ NSURL URLWithString :urlString]];
[request setHTTPMethod : @"POST" ];
NSString *boundary = @"---------------------------14737809831466499882746641449";
NSString *contentType = [ NSString stringWithFormat : @"multipart/form-data; boundary=%@" ,boundary];
[request addValue :contentType forHTTPHeaderField : @"Content-Type" ];
/* body of the post */
NSMutableData *body = [ NSMutableData data ];
[body appendData :[ NSData dataWithData :imageData]];
[request setHTTPBody :body];
NSData *returnData = [ NSURLConnection sendSynchronousRequest :request returningResponse : nil error : nil ];
NSString *returnString = [[ NSString alloc ] initWithData :returnData encoding : NSUTF8StringEncoding ];
InfoLog(@"_______ IMAGE_UPLOAD response -------------> .%@.",returnString);
。ネット
.aspxページでこのような画像を取得する
if (Request.QueryString["filename"] != null)
{
string filename = Request.QueryString["filename"].ToString();
string saveFilePath = ConfigurationManager.AppSettings["CPSBImageFolder"].ToString();
//string saveFilePath = Server.MapPath("~/images");
saveFilePath = saveFilePath + filename;
Stream objStream = Request.InputStream;
StreamReader objStreamReader = new StreamReader(objStream);
Image image = Image.FromStream(objStreamReader.BaseStream, true);
ImageCodecInfo[] info = ImageCodecInfo.GetImageEncoders();
EncoderParameters param = new EncoderParameters(1);
param.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L);
image.Save(saveFilePath, info[1], param);
Response.Write("true");
}
確かではありませんが、これがあなたに手がかりを与えることを願っています。
画像のアップロードに使用している変数(NSData)がnullではなく、ドットネットサーバーがリクエストを受信していることを確認してください。