2011-02-25 100 views
0

我試圖從iPhone應用拍攝照片並上傳到WCF REST服務。從iPhone上傳的圖像遭到損壞

我不使用UIImagePickerController來訪問攝像機並將新照片分配給我的視圖上的UIImageView。

然後我使用UIImageJPEGRepresentation將其轉換爲「真實」數據。

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

然後我嘗試提交一個請求,我的服務是這樣的:

ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; 
    [request setFile:imageData withFileName:@"myphoto.jpg" andContentType:@"image/jpeg" forKey:@"imageData"]; 

[request setRequestMethod:@"POST"]; 
[request setDelegate:self]; 
[request setDidFinishSelector:@selector(requestDone:)]; 
[request setDidFailSelector:@selector(requestWentWrong:)]; 
[request startAsynchronous]; 

服務接收數據,並將其寫入到我的網絡服務器的磁盤。但是我無法打開服務器上的圖像,因爲Windows告訴我文件已損壞。我猜我需要在iPhone應用程序中設置某種編碼或內容類型。上傳完成後,我的服務收到HTTP狀態碼200。

我製作了一個小型C#客戶端應用程序來測試服務,當我使用此客戶端從Windows機器上傳照片時,一切都很好。所以我猜想它一直是我在iPhone的y請求中丟失的東西。

感謝您的閱讀,併爲您提供任何幫助。

+0

您可以發佈您接口聲明的WCF?我正在嘗試類似的東西,遇到麻煩。 – 2011-04-04 05:36:30

+0

我也會對你如何在服務器端解決這個問題感興趣。我可以發送從iPhone就好,但我的webserivce流始終是空的。 – odyth 2011-04-18 20:51:02

回答

1

嘗試一噸的方法後,我終於得到它的工作使用:的

[request appendPostData:imageData]; 

代替:

[request setFile:imageData withFileName:@"myphoto.jpg" andContentType:@"image/jpeg" forKey:@"imageData"];