2012-06-08 42 views
2

我想上傳存儲在我的應用程序文檔文件夾中的我的文件(不同格式)。我在桌面視圖中列出了所有文件,並選擇了一行,我嘗試上傳該行中的文件。 這裏是我的代碼如何將文件上傳到存儲在ios文檔文件夾中的服務器?

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSString *urlString; 
if (indexPath.section == 0) 
    { 
     fileUrlToUpload = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:documents[indexPath.row] ofType:nil]]; 
} 
else 
{ 
fileUrlToUpload = [self.documentURLs objectAtIndex:indexPath.row]; 

} 
[self setupDocumentControllerWithURL:fileUrlToUpload]; 

urlString = [[fileUrlToUpload path] lastPathComponent]; 
printf("\n the string is :%s",[urlString UTF8String]); 
[self publishToServer:urlString]; 

-(void)publishToServer:(NSString *)str 
    { 
if([str length] > 0) 
{ 

    NSString *[email protected]""; 
    urlPath= str; 
    NSString *urlString = @"http://162.108.0.8:8080/Path/upload_path.jsp?"; 
    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 *postBody = [NSMutableData data]; 


    [postBody appendData:[[NSString stringWithFormat:@"--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [postBody appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"path\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [postBody appendData:[[NSString stringWithString:urlPath] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [postBody appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 

[postBody appendData:[[NSString stringWithFormat:@"\r\n--%@--",boundary] dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]]; 

    [request setHTTPBody:postBody]; 
    NSLog(@"request === %@",request); 

    NSData *returnData =nil; 
    returnData= [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; 

    NSLog(@"returnData === %@",returnData); 

    NSString * string=[[NSString alloc]initWithData:returnData encoding:NSUTF8StringEncoding]; 
    } 

1)當我試圖從後模擬器空值在服務器數據庫中存儲的文件,我收到「成功上傳」作爲響應。
2)當我試圖從後我沒有得到服務器甚至可以爲null值的設備文件。

請幫幫我。

謝謝

+0

請任何一個幫助我。我真的很困惑。是否無法將.txt,.html,.pdf,.jpg文件上傳到服務器 – user1179590

回答

0

不知道有關文件類型的,但圖像可以上傳,順便說一句,我曾試圖在這裏一切可能的例子,但是沒有工作(我有$ _FILES數組是空的),所以我不得不構建我自己的基礎上的例子,它的工作原理:

- (void) uploadLog :(NSString *) filePath 
{ 
NSData *data = [[NSData alloc] initWithContentsOfFile:filePath]; 
NSString *urlString =[NSString stringWithFormat:@"http://www.yoursite.com/accept.php"]; 
// to use please use your real website link. 
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; 
[request setURL:[NSURL URLWithString:urlString]]; 
[request setHTTPMethod:@"POST"]; 

NSString *boundary = @"_187934598797439873422234"; 
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary]; 
[request setValue:contentType forHTTPHeaderField: @"Content-Type"]; 
[request setValue:@"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" forHTTPHeaderField:@"Accept"]; 
[request setValue:@"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/536.26.14 (KHTML, like Gecko) Version/6.0.1 Safari/536.26.14" forHTTPHeaderField:@"User-Agent"]; 
[request setValue:@"http://google.com" forHTTPHeaderField:@"Origin"]; 

NSMutableData *body = [NSMutableData data]; 
[body appendData:[[NSString stringWithFormat:@"Content-Length %d\r\n\r\n", [data length] ] dataUsingEncoding:NSUTF8StringEncoding]]; 
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"picture\"; filename=\"%@.png\"\r\n", @"newfile"] dataUsingEncoding:NSUTF8StringEncoding]]; 

[body appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; 

[body appendData:[NSData dataWithData:data]]; 

[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 


[request setHTTPBody:body]; 
[request addValue:[NSString stringWithFormat:@"%d", [body length]] forHTTPHeaderField:@"Content-Length"]; 


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

這裏是PHP的一部分,對我的作品(對不起,我不熟悉JSP):

<?php 
    $target_path = "./uploads/"; 

    $target_path = $target_path . basename($_FILES['picture']['name']); 

    if(move_uploaded_file($_FILES['picture']['tmp_name'], $target_path)) { 
    echo "The file ". basename($_FILES['picture']['name'])." has been uploaded"; 
    } else{ 
    echo "There was an error uploading the file, please try again!"; 
    } 
?> 
相關問題