2010-07-29 85 views
0

我有一點問題。 我必須使用POST方法將我的iPhone上的照片上傳到Web服務器,但服務器文件在aspx中。 我用我的服務器和PHP文件試過我的代碼:效果很好! 現在有了aspx文件:不會上傳:(iPhone:將圖片上傳到網頁aspx文件

我到.aspx不havec訪問

這裏是我的iphone代碼:

NSData *imageData = UIImageJPEGRepresentation(imageView.image,70); 

NSString *urlString = @"http://iphone.domain.net/upload_photos.aspx"; 


NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease]; 
[request setURL:[NSURL URLWithString:urlString]]; 
[request setHTTPMethod:@"POST"]; 

NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"]; 
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",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"photo\"; filename=\"%@.jpg\"\r\n",[c nom]] dataUsingEncoding:NSUTF8StringEncoding]]; 
[body appendData:[[NSString stringWithString:@"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]; 

我認爲這個問題是來自在Content-Type或爲我dataUsingEncoding:?參數 你有想法,並解決它

+1

順便說一句,你確定的ASPX工作擺在首位,與你路過此地的確切參數? – mvds 2010-07-29 19:39:18

+0

,你能指定'[c nom]'中的內容嗎? – mvds 2010-07-29 19:40:38

+0

[c nom]是正確的NSString命名我的文件「%@。jpg」 我不知道aspx文件我不能看看它:( – Pierre 2010-07-29 19:48:06

回答

0

如果您不反對使用第三方庫,請考慮查看ASIHttpRequest。它會讓你的生活變得更輕鬆:

http://allseeing-i.com/ASIHTTPRequest/

http://allseeing-i.com/ASIHTTPRequest/How-to-use

ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; 

    // Upload a file on disk 
    [request setFile:@"/Users/ben/Desktop/ben.jpg" withFileName:@"myphoto.jpg" andContentType:@"image/jpeg" 
    forKey:@"photo"]; 

    // Upload an NSData instance 
    [request setData:imageData withFileName:@"myphoto.jpg" andContentType:@"image/jpeg" forKey:@"photo"]; 
+0

謝謝,我試過,但沒有工作:( 我寫道: 。 ASIFormDataRequest * request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:urlString]]; \t [請求setData:imageData withFileName:@「myImage.png」andContentType:@「image/png」forKey:@「photo」]; – Pierre 2010-07-29 22:19:31

+0

什麼是問題? – 2010-07-29 23:40:19

+0

什麼都沒有發生...... – Pierre 2010-07-30 08:48:01

0

正常,邊界,當它在Content-Type自行指定不包含---除了從那以後,看不到什麼不尋常的東西。

+0

所以我必須寫這個:NSString * boundary = [NSString stringWithString:@「14737809831466499882746641449」]; ? – Pierre 2010-07-29 19:48:48

+0

是,甚至'的NSString *邊界= @「14737809831466499882746641449」;' – mvds 2010-07-29 20:00:09

0

嘗試使用curl從命令行將其上傳到aspx服務器。一旦你有了這個工作,通過-v(詳細)或-i(包括HTTP標頭)來檢查到底發送了什麼,然後你可以嘗試在Cocoa中複製它。

+0

對不起,我不知道如何使用這個命令:( – Pierre 2010-07-29 20:16:56