【问题标题】:How to Upload Video to FTP Server after Recording in iOS?在 iOS 中录制后如何将视频上传到 FTP 服务器?
【发布时间】:2016-03-15 11:11:34
【问题描述】:
NSURL *mediaURL=[info objectForKey:UIImagePickerControllerMediaURL];
NSData *videoData=[NSData dataWithContentsOfURL:_videoURL];
NSString *moviePath=[mediaURL path];
SCRFTPRequest *ftpRequest=[[SCRFTPRequest alloc] initWithURL:[NSURL           URLWithString:@"ftp://xyz.ca/"] toUploadFile:[mediaURL path]];
ftpRequest.username = @"xyz.ca";
ftpRequest.password = @"buKMH3ko8Nn";

//Specify a custom upload file name (optional)
ftpRequest.customUploadFileName = @"h.MOV";
//The delegate must implement the SCRFTPRequestDelegate protocol
ftpRequest.delegate = self;
[ftpRequest startRequest];

但这会上传零大小的文件。

我在 didFinishPickingMediaWithInfo: 委托方法中使用上述代码。 请帮帮我。

【问题讨论】:

    标签: ios file-upload ftp


    【解决方案1】:

    只需将 NSData 传递给此方法

    - (NSData *)generatePostDataForData:(NSData *)uploadData
    {
        // Generate the post header:
        NSString *post = [NSString stringWithCString:"--AaB03x\r\nContent-Disposition: form-data; name=\"upload[file]\"; filename=\"somefile\"\r\nContent-Type: application/octet-stream\r\nContent-Transfer-Encoding: binary\r\n\r\n" encoding:NSASCIIStringEncoding];
    
        // Get the post header int ASCII format:
        NSData *postHeaderData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
    
       // Generate the mutable data variable:
        NSMutableData *postData = [[NSMutableData alloc] initWithLength:[postHeaderData length] ];
        [postData setData:postHeaderData];
    
        // Add the image:
        [postData appendData:uploadData];
    
        // Add the closing boundary:
        [postData appendData:[@"\r\n--AaB03x--" dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]];
    
        // Return the post data:
        return postData;
    }
    
    
    // For post video use this function
    
    - (void)post:(NSData *)fileData
    {
        NSLog(@"POSTING");
    
        // Generate the postdata:
        NSData *postData = [self generatePostDataForData: fileData];
        NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
    
        // Setup the request:
        NSMutableURLRequest *uploadRequest = [[[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://www.example.com:3000/"] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:30] autorelease];
        [uploadRequest setHTTPMethod:@"POST"];
        [uploadRequest setValue:postLength forHTTPHeaderField:@"Content-Length"];
        [uploadRequest setValue:@"multipart/form-data; boundary=AaB03x" forHTTPHeaderField:@"Content-Type"];
        [uploadRequest setHTTPBody:postData];
    
        // Execute the request:
        NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:uploadRequest delegate:self];
        if (conn)
        {
            // Connection succeeded (even if a 404 or other non-200 range was returned).
            NSLog(@"success");
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Got Server Response" message:@"Success" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
            [alert show];
            [alert release];
        }
        else
        {
            // Connection failed (cannot reach server).
            NSLog(@"fail");
        }
    }
    

    【讨论】:

    • 我们必须直接在FTP上上传文件,而不是通过网络服务
    猜你喜欢
    • 1970-01-01
    • 2021-07-07
    • 1970-01-01
    • 2015-11-25
    • 1970-01-01
    • 2011-10-09
    • 1970-01-01
    • 2012-06-30
    • 1970-01-01
    相关资源
    最近更新 更多