php上传图片无法上传

时间:2014-08-31 18:06:47

标签: php mysql ios image upload

我正在尝试将图像和标题从iOS上传到我的服务器。我有一个成功接收图像和标题的PHP,但后来我收到错误:上传文件时出错,请再试一次。 php出了什么问题?

<?php
$myparam = $_POST['userfile'];     //getting image Here
$mytextLabel= $_POST['filenames'];   //getting textLabe Here
echo $myparam;
echo $mytextLabel; 
$target_path = "upload/";
$target_path = $target_path . basename( $_FILES['myfile']['name']);  

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

编辑:以下是iOS端代码,但有效

NSString *filenames = @"title name";      //set name here
        NSLog(@"%@", filenames);
        NSString *urlString = @"http://www.myserver.com/uploads.php";

        NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
        [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 *body = [NSMutableData data];

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

        [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
        [body appendData:[@"Content-Disposition: form-data; name=\"userfile\"; filename=\".jpg\"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];

        [body appendData:[@"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]];
        // setting the body of the post to the reqeust
        [request setHTTPBody:body];
        // now lets make the connection to the web
        NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
        NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];

1 个答案:

答案 0 :(得分:0)

经过大量的工作(大约48小时后),我设法让它运转起来。 的的iOS:

 NSData *imageData =UIImageJPEGRepresentation(imageView.image, 90);
    NSString *imgPath= @"http://www.myserver.com/uploads.php";
        NSString *filenames = labelb.text; //name of picture excluding .jpg

        NSString *urlString = imgPath;
        NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
        [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 *body = [NSMutableData data];

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

        [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"userfile\"; filename=\"%@.jpg\"\r\n", filenames] dataUsingEncoding:NSUTF8StringEncoding]];

       // [body appendData:[@"Content-Disposition: form-data; name=\"userfile\"; filename=\".jpg\"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];

        [body appendData:[@"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]];
        // setting the body of the post to the reqeust
        [request setHTTPBody:body];
        // now lets make the connection to the web
        NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
        NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
        if([returnString isEqualToString:@"yes"])
        {
             [self finitop];

        }
        else {
            [spinner stopAnimating];
            label.text = @"Posted Empty Because Upload Failed";

        }

<强> PHP:

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

if (is_uploaded_file($_FILES['userfile']['tmp_name']))
{
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile))
{
    echo "yes";
}

}
else
{
    echo "NO ";
}


?>