Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IOS使用post和PHP将pdf文件从文档目录上载到服务器_Php_Ios_Objective C_Pdf - Fatal编程技术网

IOS使用post和PHP将pdf文件从文档目录上载到服务器

IOS使用post和PHP将pdf文件从文档目录上载到服务器,php,ios,objective-c,pdf,Php,Ios,Objective C,Pdf,我正在从文档目录上传pdf。我已经提到将UIview转换为PDF并将PDF上传到服务器,但结果是PDF文件为零字节 这是我的密码。 Xcode侧: -(NSMutableData *)createPDFDatafromUIView:(UIView*)aView { NSMutableData *pdfData = [NSMutableData data]; // Points the pdf converter to the mutable data object and to

我正在从文档目录上传pdf。我已经提到将UIview转换为PDF并将PDF上传到服务器,但结果是PDF文件为零字节

这是我的密码。 Xcode侧:

-(NSMutableData *)createPDFDatafromUIView:(UIView*)aView
{
    NSMutableData *pdfData = [NSMutableData data];

    // Points the pdf converter to the mutable data object and to the UIView to be converted
    UIGraphicsBeginPDFContextToData(pdfData, aView.bounds, nil);
    UIGraphicsBeginPDFPage();
    CGContextRef pdfContext = UIGraphicsGetCurrentContext();


    // draws rect to the view and thus this is captured by UIGraphicsBeginPDFContextToData

    [aView.layer renderInContext:pdfContext];

    // remove PDF rendering context
    UIGraphicsEndPDFContext();

    return pdfData;
}

-(NSString*)createPDFfromUIView:(UIView*)aView saveToDocumentsWithFileName:(NSString*)aFilename
{
    NSMutableData *pdfData = [self createPDFDatafromUIView:aView];

    UIGraphicsBeginPDFContextToData(pdfData, aView.bounds, nil);
    UIGraphicsBeginPDFPage();
    CGContextRef pdfContext = UIGraphicsGetCurrentContext();

    // draws rect to the view and thus this is captured by UIGraphicsBeginPDFContextToData
    [aView.layer renderInContext:pdfContext];
    // remove PDF rendering context
    UIGraphicsEndPDFContext();
    // Retrieves the document directories from the iOS device
    NSArray* documentDirectories = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES);

    NSString* documentDirectory = [documentDirectories objectAtIndex:0];
    NSString* documentDirectoryFilename = [documentDirectory stringByAppendingPathComponent:aFilename];

    // instructs the mutable data object to write its context to a file on disk
    [pdfData writeToFile:documentDirectoryFilename atomically:YES];
    NSLog(@"documentDirectoryFileName: %@",documentDirectoryFilename);
    NSLog(@"The pdf is saved in %@", documentDirectoryFilename);
    return documentDirectoryFilename;
}

-(IBAction)snapchot:(id)sender
{
    NSDate*todayDate = [NSDate date];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
    [dateFormatter setDateFormat:@"ddMMyyyy"];
    NSString *mytext = [NSString stringWithFormat:@"%@.pdf",[dateFormatter stringFromDate:todayDate]];


    [self createPDFfromUIView:_myView saveToDocumentsWithFileName:mytext];
    NSData *datadat = [[NSData alloc] initWithContentsOfFile:mytext];
    NSString *urlString = @"http://localhost/pfy/uploadtestformpdf.php";
    NSString *filename = @"filename2";
    NSMutableURLRequest *request= [[NSMutableURLRequest alloc] init];
    [request setURL:[NSURL URLWithString:urlString]];
    [request setHTTPMethod:@"POST"];
    NSString *boundary = @"---------------------------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--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
    [postbody appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"userfile\"; filename=\"%@.pdf\"\r\n", filename] dataUsingEncoding:NSUTF8StringEncoding]];
    [postbody appendData:[[NSString stringWithString:@"Content-Type: application/pdf\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
    [postbody appendData:[NSData dataWithData:datadat]];
    [postbody appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
    [request setHTTPBody:postbody];

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

<?php 
$uploaddir = './uploaded/';
$file = basename($_FILES['userfile']['name']); $uploadfile = $uploaddir . $file; 
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { echo "Received file: $file";}
?>


您能帮助我吗?

尽管您的代码存在一般问题,但问题似乎是您正在上载一个空白文件。您的方法
createPDFfromUIView:saveToDocumentsWithFileName:
将文件保存到documents目录并返回文件路径。但是,在使用文件内容填充
NSData
对象时,实际上并没有使用该方法返回的路径。更改代码以捕获返回的路径字符串:

NSString *path = [self createPDFfromUIView:_myView saveToDocumentsWithFileName:mytext];
NSData *datadat = [[NSData alloc] initWithContentsOfFile:path];

非常感谢你的帮助。代码更新后,工作成功。谢谢