2009-12-21 44 views
10

tôi đã tìm thấy một vài đoạn trích từ trực tuyến để tải hình ảnh từ iphone lên thư mục máy chủ, hiển thị của nó để sử dụng kịch bản phía máy chủ ví dụ. sử dụng php ở phía máy chủtải hình ảnh từ iphone lên thư mục máy chủ

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

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { 
     echo "Uploaded!"; 
}else{ 
    echo "Not Uploaded!"; 
} 
/> 

là nó bất kỳ những khả năng để tải lên hình ảnh trực tiếp vào thư mục máy chủ mà không đoạn mã trên,

Hãy nói tôi muốn tải lên vào http://111.22.333.44/mysite/pics/ w/o bất kỳ máy chủ side scripting, nếu có thể thực hiện điều này như thế nào

cảm ơn

Trả lời

18
/* 
    turning the image into a NSData object 
    getting the image back out of the UIImageView 
    setting the quality to 90 
*/ 
NSData *imageData = UIImageJPEGRepresentation(image.image, 90); 
// setting up the URL to post to 
NSString *urlString = @"http://iphone.zcentric.com/test-upload.php"; 

// setting up the request object now 
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease]; 
[request setURL:[NSURL URLWithString:urlString]]; 
[request setHTTPMethod:@"POST"]; 

/* 
    add some header info now 
    we always need a boundary when we post a file 
    also we need to set the content type 

    You might want to generate a random boundary.. this is just the same 
    as my output from wireshark on a valid html post 
*/ 
NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"]; 
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary]; 
[request addValue:contentType forHTTPHeaderField: @"Content-Type"]; 

/* 
    now lets create the body of the post 
*/ 
NSMutableData *body = [NSMutableData data]; 
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
[body appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"userfile\"; filename=\"ipodfile.jpg\"\r\n"] 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]]; 
// 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]; 

NSLog(returnString); 

mã này sẽ rất hữu ích cho bạn ....

+0

tôi phải tháo phù hợp với ứng dụng/octet- để làm cho nó hoạt động với tệp đính kèm_fu. Bất kỳ ý tưởng tại sao? –

+0

Đó là mã tuyệt vời. Làm việc cho tôi lần đầu tiên. Cảm ơn parvind :) – Prerna

+0

Hãy nhận biết kích thước của tệp được tải lên. Bạn đang tạo yêu cầu với nội dung của toàn bộ tệp trong bộ nhớ và sau đó gửi nó ... nếu tệp quá lớn (hoặc bạn đang tải lên nhiều tệp cùng một lúc), bạn có thể gặp phải sự cố về mức tiêu thụ bộ nhớ – JakubKnejzlik

0

Nếu bạn thiết lập máy chủ web để cho phép phương pháp PUT bạn có thể thực hiện việc này. 99% máy chủ web chỉ cho phép các phương thức GET và POST.

Chưa bao giờ làm điều đó, tôi không thể giúp bạn nhiều. Đây là một trang mà tôi nhận được từ google nói về nó:

http://www.w3.org/QA/2008/10/understanding-http-put.html

Các vấn đề liên quan