2009-08-12 12 views
16

मैं तर्क को कार्यान्वित करना चाहता हूं जो फ़ाइल को FTP सर्वर पर अपलोड करता है।आईफोन पर एफ़टीपी सर्वर पर फ़ाइल अपलोड करें

मैं आईफोन विकास में नया हूं, इसलिए पसंदीदा दृष्टिकोण को समझना चाहता हूं। इस कार्य के लिए उपलब्ध एपीआई ब्राउज़ करने के बाद मैंने केवल कोड ढूंढने में कामयाब रहा है जो सीएफनेटवर्क का उपयोग करता है (जो उद्देश्य सी आधारित नहीं है)।

यूआरएल लोडिंग सिस्टम भी है जो NSURL आदि का उपयोग करता है जो उद्देश्य सी आधारित हैं।

तो, मेरा प्रश्न: क्या एफ़टीपी सर्वर पर फ़ाइल अपलोड को लागू करने के लिए यूआरएल लोडिंग सिस्टम का उपयोग करना संभव है?

धन्यवाद।

उत्तर

32

मैं करने के लिए एक फ़ाइल को पोस्ट और PHP अपलोड करने को संभालने के लिए ....

इस कोड को एक तस्वीर अपलोड करने के लिए प्रयोग किया जाता है एक PHP पृष्ठ का उपयोग करें, लेकिन यह किसी भी फाइल के साथ काम करने के लिए अनुकूलित किया जा सकता है।

पीएचपी कोड:

<?php 
$uploaddir = 'photos/'; 
$file = basename($_FILES['userfile']['name']); 
$uploadfile = $uploaddir . $file; 

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { 
    echo "OK"; 
} else { 
    echo "ERROR"; 
} 

?> 

iPhone कोड:

- (BOOL)uploadImage:(NSData *)imageData filename:(NSString *)filename{ 


    NSString *urlString = @"http://www.yourdomainName.com/yourPHPPage.php"; 

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

    NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; 
    NSString *returnString = [[[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding] autorelease]; 

    return ([returnString isEqualToString:@"OK"]); 
} 

विधि कॉल:

[self uploadImage:UIImageJPEGRepresentation(imageView.image, 1.0) filename:imageName]; 
+0

मैं अपने कोड को लागू करने का प्रयास किया गया है, लेकिन इस प्रक्रिया हमेशा एक त्रुटि देता है । मैं कोड ब्लॉक को पूरी तरह से समझ नहीं पा रहा हूं, इसलिए यह हो सकता है कि जिस तरह से डेटा लागू किया जा रहा है वह एनएसडीटा के लिए उचित नहीं है, मैं php फ़ाइल को भेजने का प्रयास कर रहा हूं। मेरे पास एक एनएसडीएटी ऑब्जेक्ट है जिसमें एनएसएमयूटेबलएरे के एनएसकेडएड आर्किवर के परिणाम शामिल हैं जिसमें कस्टम ऑब्जेक्ट्स (मेरे केस डेटाबेस रिकॉर्ड में) शामिल हैं। क्या आप मुझे कोड ब्लॉक और/या समझने के लिए एक अच्छे संसाधन के लिए इंगित करने में सक्षम होंगे मेरे उद्देश्य के लिए इस कोड को परिष्कृत करने के सुझावों पर सुझाव दें? –

+0

सुधार: एक टाइपो था। कोड ठीक लौटाता है लेकिन फ़ाइल निर्दिष्ट निर्देशिका में सहेजी नहीं जाती है। –

+0

समस्या हल हो गई। कृपया पहले अनुरोध की उपेक्षा करें। धन्यवाद! –

संबंधित मुद्दे