1

画像を受信するashxスクリプトを使用して、iPhoneからサーバーに画像をアップロードしています。私が抱えている問題は、私が試したすべてに関係なく、context.Request.Filesが空であるということです。

これが私のxcodeコードです

NSData *imageData = [[appDelegate currentProjectData] objectForKey:@"frontImage"];

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.****.com/iPhoneJpgUploadHandler.ashx"]];
[request setHTTPMethod:@"POST"];
NSString *boundary = @"- - - - - - - - - - Boundary String - - - - - - - - - -";
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary];
[request addValue:contentType forHTTPHeaderField:@"Content-Type"];

NSMutableData *body = [NSMutableData data];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Disposition: form-data; name=\"userfile\"; filename=\"iphoneimage.jpg\"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[NSData dataWithData:imageData]];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[request setHTTPBody:body];
[request addValue:[NSString stringWithFormat:@"%d", [imageData length]] forHTTPHeaderField:@"Content-Length"];

NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
NSLog(@"%@", returnString);

そして、これが私のアップロードスクリプトのコードです

public void ProcessRequest (HttpContext context) {
    string uploadDir = "C:\\";

    if(context.Request.Files.Count > 0) {
        HttpPostedFile file = context.Request.Files[0];
        file.SaveAs(Path.Combine(uploadDir, file.FileName));
        context.Response.Write("success");
    } else {
        context.Response.Write("fail");
    }
}

xcodeのnslogは「失敗」を書き出すので、スクリプトを実行して戻ります。エラーは発生していません。私が間違っていることについて何か考えはありますか?

4

1 に答える 1

1

だから私はそれを機能させました。私が変更したのは、からの境界文字列だけです

NSString *boundary = @"- - - - - - - - - - Boundary String - - - - - - - - - -";

これに

NSString *boundary = @"xxxxBoundaryStringxxxx";

私が読んだすべてのことは、それが残りの投稿データに存在しなかった文字列である必要があるだけだと言っていました。私の最初の文字列がどのようになっているのかわかりませんが、私が知らない他の規定があるかもしれません。いずれにせよ、それは今動作します。

于 2012-04-19T14:13:52.580 に答える