使用thinksns同步图片微博到新浪微博出现的问题
Error: 40009:Error: system error, does multipart has image?
经过一步一步测试,最终将问题定位到了 addons/plugins/Login/lib/_OAuth/ 下面的 oauth.php 这里面在处理图片的时候出现里错误,错误的行数是 889 多行左右,看下面代码 其实是个foreach 循环问题
foreach($params as $parameter => $value)
{
//if( $parameter == 'pic' && $value{0} == '@' )
if(in_array($parameter, array("pic", "image")))
{
//
// $tmp = 'E:\iweibo_proj\trunk\1.txt';
// $url = ltrim($tmp,'@');
// $content = file_get_contents( $url );
// $filename = reset( explode( '?' , basename( $url ) ));
// $mime = self::get_image_mime($url);
//$url = ltrim( $value , '@' );
$content = file_get_contents( $value );
$filename = reset( explode( '?' , basename( $value ) ));
$mime = self::get_image_mime($value);
$multipartbody .= $MPboundary . "\r\n";
$multipartbody .= 'Content-Disposition: form-data; name="' . $parameter . '"; filename="' . $filename .
'"' . "\r\n";
$multipartbody .= 'Content-Type: ' . $mime . "\r\n\r\n";
$multipartbody .= $content . "\r\n";
}
else
{
$multipartbody .= $MPboundary . "\r\n";
$multipartbody .= 'Content-Disposition: form-data; name="' . $parameter . "\"\r\n\r\n";
$multipartbody .= $value . "\r\n";
}
}
这段代码需要修改
加上了一个判断
if($sync == 'qq'){
foreach($params as $parameter => $value)
{
//if( $parameter == 'pic' && $value{0} == '@' )
if(in_array($parameter, array("pic", "image")))
{
//
// $tmp = 'E:\iweibo_proj\trunk\1.txt';
// $url = ltrim($tmp,'@');
// $content = file_get_contents( $url );
// $filename = reset( explode( '?' , basename( $url ) ));
// $mime = self::get_image_mime($url);
//$url = ltrim( $value , '@' );
$content = file_get_contents( $value );
$filename = reset( explode( '?' , basename( $value ) ));
$mime = self::get_image_mime($value);
$multipartbody .= $MPboundary . "\r\n";
$multipartbody .= 'Content-Disposition: form-data; name="' . $parameter . '"; filename="' . $filename .
'"' . "\r\n";
$multipartbody .= 'Content-Type: ' . $mime . "\r\n\r\n";
$multipartbody .= $content . "\r\n";
}
else
{
$multipartbody .= $MPboundary . "\r\n";
$multipartbody .= 'Content-Disposition: form-data; name="' . $parameter . "\"\r\n\r\n";
$multipartbody .= $value . "\r\n";
}
}
}else{
foreach ($params as $parameter => $value) {
//if( $parameter == 'pic' && $value{0} == '@' )
if( in_array($parameter,array("pic","image")) && $value{0} == '@' )
{
$url = ltrim( $value , '@' );
$content = file_get_contents( $url );
$filename = reset( explode( '?' , basename( $url ) ));
$mime = self::get_image_mime($url);
$multipartbody .= $MPboundary . "\r\n";
$multipartbody .= 'Content-Disposition: form-data; name="' . $parameter . '"; filename="' . $filename . '"'. "\r\n";
$multipartbody .= 'Content-Type: '. $mime . "\r\n\r\n";
$multipartbody .= $content. "\r\n";
}
else
{
$multipartbody .= $MPboundary . "\r\n";
$multipartbody .= 'content-disposition: form-data; name="'.$parameter."\"\r\n\r\n";
$multipartbody .= $value."\r\n";
}
}
}
Error: 40009:Error: system error, does multipart has image?
经过一步一步测试,最终将问题定位到了 addons/plugins/Login/lib/_OAuth/ 下面的 oauth.php 这里面在处理图片的时候出现里错误,错误的行数是 889 多行左右,看下面代码 其实是个foreach 循环问题
foreach($params as $parameter => $value)
{
//if( $parameter == 'pic' && $value{0} == '@' )
if(in_array($parameter, array("pic", "image")))
{
//
// $tmp = 'E:\iweibo_proj\trunk\1.txt';
// $url = ltrim($tmp,'@');
// $content = file_get_contents( $url );
// $filename = reset( explode( '?' , basename( $url ) ));
// $mime = self::get_image_mime($url);
//$url = ltrim( $value , '@' );
$content = file_get_contents( $value );
$filename = reset( explode( '?' , basename( $value ) ));
$mime = self::get_image_mime($value);
$multipartbody .= $MPboundary . "\r\n";
$multipartbody .= 'Content-Disposition: form-data; name="' . $parameter . '"; filename="' . $filename .
'"' . "\r\n";
$multipartbody .= 'Content-Type: ' . $mime . "\r\n\r\n";
$multipartbody .= $content . "\r\n";
}
else
{
$multipartbody .= $MPboundary . "\r\n";
$multipartbody .= 'Content-Disposition: form-data; name="' . $parameter . "\"\r\n\r\n";
$multipartbody .= $value . "\r\n";
}
}
这段代码需要修改
加上了一个判断
if($sync == 'qq'){
foreach($params as $parameter => $value)
{
//if( $parameter == 'pic' && $value{0} == '@' )
if(in_array($parameter, array("pic", "image")))
{
//
// $tmp = 'E:\iweibo_proj\trunk\1.txt';
// $url = ltrim($tmp,'@');
// $content = file_get_contents( $url );
// $filename = reset( explode( '?' , basename( $url ) ));
// $mime = self::get_image_mime($url);
//$url = ltrim( $value , '@' );
$content = file_get_contents( $value );
$filename = reset( explode( '?' , basename( $value ) ));
$mime = self::get_image_mime($value);
$multipartbody .= $MPboundary . "\r\n";
$multipartbody .= 'Content-Disposition: form-data; name="' . $parameter . '"; filename="' . $filename .
'"' . "\r\n";
$multipartbody .= 'Content-Type: ' . $mime . "\r\n\r\n";
$multipartbody .= $content . "\r\n";
}
else
{
$multipartbody .= $MPboundary . "\r\n";
$multipartbody .= 'Content-Disposition: form-data; name="' . $parameter . "\"\r\n\r\n";
$multipartbody .= $value . "\r\n";
}
}
}else{
foreach ($params as $parameter => $value) {
//if( $parameter == 'pic' && $value{0} == '@' )
if( in_array($parameter,array("pic","image")) && $value{0} == '@' )
{
$url = ltrim( $value , '@' );
$content = file_get_contents( $url );
$filename = reset( explode( '?' , basename( $url ) ));
$mime = self::get_image_mime($url);
$multipartbody .= $MPboundary . "\r\n";
$multipartbody .= 'Content-Disposition: form-data; name="' . $parameter . '"; filename="' . $filename . '"'. "\r\n";
$multipartbody .= 'Content-Type: '. $mime . "\r\n\r\n";
$multipartbody .= $content. "\r\n";
}
else
{
$multipartbody .= $MPboundary . "\r\n";
$multipartbody .= 'content-disposition: form-data; name="'.$parameter."\"\r\n\r\n";
$multipartbody .= $value."\r\n";
}
}
}