日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php后台无法接受文件,ios afnetworking2.x上传图片 服务端php无法接受文件问题

發布時間:2025/4/5 php 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php后台无法接受文件,ios afnetworking2.x上传图片 服务端php无法接受文件问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

//思路如下

1、將image轉成NSData

2、通過傳遞參數的形式 而不是formData的方式進行傳輸,formData(有時可以接受到,有時候不行,不穩定)

3、php獲取二進制數據 進行存儲。

//代碼如下

ios端

-(void)uploadImage:(UIImage?*)image{

AFHTTPRequestOperationManager?*manager?=?[AFHTTPRequestOperationManager?manager];

NSData?*?imageData=UIImageJPEGRepresentation(image,?0.1);//轉換成二進制的數據流

NSDictionary?*parameters?=?@{@"file":?imageData};//這一步是重點

[manager?POST:@"http://www.d-shang.com/index.php?blog/upload"?parameters:parameters?constructingBodyWithBlock:^(id?formData)?{

}?success:^(AFHTTPRequestOperation?*operation,?id?responseObject)?{

NSLog(@"Success:?%@",?responseObject);

}?failure:^(AFHTTPRequestOperation?*operation,?NSError?*error)?{

NSLog(@"Error:?%@",?error);

}];

}

php端

public?function?upload(){

$data=$_POST['file'];

$filename=time().".jpg";

$file=ROOT."/log/".$filename;

$handle=fopen($file,"w+");

fwrite($handle,$data);

fclose($handle);

}

php端判斷二進制流文件格式(不是必須的)

/**

*?通過二進制流獲取文件類型

*?@param?string?$binary_data

*?@return?string

*/

function?get_file_type_binary_data($binary_data){

$str_info=?@unpack("c2chars",?substr($binary_data,?0,?2));

$type_code=?$str_info['chars1'].$str_info['chars2'];

switch?($type_code)?{

case?'7790':

$file_type?=?'exe';

break;

case?'7784':

$file_type?=?'midi';

break;

case?'8075':

$file_type?=?'zip';

break;

case?'8297':

$file_type?=?'rar';

break;

case?'255216':

case?'-1-40':

$file_type?=?'jpg';

break;

case?'7173':

$file_type?=?'gif';

break;

case?'6677':

$file_type?=?'bmp';

break;

case?'13780':

case?'-11980':

$file_type?=?'png';

break;

default:

$file_type?=?'unknown';

break;

}

return?$file_type;

}

//你可能還需要等比例壓縮圖片 ?在上傳前處理 不然數據流量太大了

-(UIImage?*)?imageCompressForWidth:(UIImage?*)sourceImage?targetWidth:(CGFloat)defineWidth{

UIImage?*newImage?=?nil;

CGSize?imageSize?=?sourceImage.size;

CGFloat?width?=?imageSize.width;

CGFloat?height?=?imageSize.height;

CGFloat?targetWidth?=?defineWidth;

CGFloat?targetHeight?=?height?/?(width?/?targetWidth);

CGSize?size?=?CGSizeMake(targetWidth,?targetHeight);

CGFloat?scaleFactor?=?0.0;

CGFloat?scaledWidth?=?targetWidth;

CGFloat?scaledHeight?=?targetHeight;

CGPoint?thumbnailPoint?=?CGPointMake(0.0,?0.0);

if(CGSizeEqualToSize(imageSize,?size)?==?NO){

CGFloat?widthFactor?=?targetWidth?/?width;

CGFloat?heightFactor?=?targetHeight?/?height;

if(widthFactor?>?heightFactor){

scaleFactor?=?widthFactor;

}

else{

scaleFactor?=?heightFactor;

}

scaledWidth?=?width?*?scaleFactor;

scaledHeight?=?height?*?scaleFactor;

if(widthFactor?>?heightFactor){

thumbnailPoint.y?=?(targetHeight?-?scaledHeight)?*?0.5;

}else?if(widthFactor?

thumbnailPoint.x?=?(targetWidth?-?scaledWidth)?*?0.5;

}

}

UIGraphicsBeginImageContext(size);

CGRect?thumbnailRect?=?CGRectZero;

thumbnailRect.origin?=?thumbnailPoint;

thumbnailRect.size.width?=?scaledWidth;

thumbnailRect.size.height?=?scaledHeight;

[sourceImage?drawInRect:thumbnailRect];

newImage?=?UIGraphicsGetImageFromCurrentImageContext();

if(newImage?==?nil){

NSLog(@"scale?image?fail");

}

UIGraphicsEndImageContext();

return?newImage;

}

參考資料:

[等比例縮小處理]http://www.cnblogs.com/yswdarren/p/3611934.html

總結

以上是生活随笔為你收集整理的php后台无法接受文件,ios afnetworking2.x上传图片 服务端php无法接受文件问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。