[D5] Да. Вам нужно использовать Assembly.LoadFrom , чтобы загрузить сборку в память, затем вы можете использовать Activator.CreateInstance , чтобы создать экземпляр вашего предпочтительного типа. Сначала вам нужно посмотреть тип, используя отражение. Вот простой пример:
Assembly assembly = Assembly.LoadFrom («MyNice.dll»); Тип type = assembly.GetType («MyType»); object instanceOfMyType = Activator.CreateInstance (type);
Когда у вас есть имя файла сборки и имя типа, вы можете использовать Activator.CreateInstance (assemblyName, typeName) для попросите разрешение типа .NET разрешить это в тип. Вы можете обернуть это с помощью try / catch, чтобы в случае сбоя вы могли выполнить поиск каталогов, где вы можете специально хранить дополнительные сборки, которые иначе не могли бы быть найдены. Это будет использовать предыдущий метод в этой точке.
Проблема заключается в том, что data:image/png;base64,
включен в кодированное содержимое. Это приведет к недопустимым данным изображения, когда функция base64 его декодирует. Удалите эти данные в функции перед декодированием строки, например.
function base64_to_jpeg($base64_string, $output_file) {
// open the output file for writing
$ifp = fopen( $output_file, 'wb' );
// split the string on commas
// $data[ 0 ] == "data:image/png;base64"
// $data[ 1 ] == <actual base64 string>
$data = explode( ',', $base64_string );
// we could add validation here with ensuring count( $data ) > 1
fwrite( $ifp, base64_decode( $data[ 1 ] ) );
// clean up the file resource
fclose( $ifp );
return $output_file;
}
Вам нужно удалить часть, которая говорит data:image/png;base64,
в начале данных изображения. После этого будут получены фактические данные base64.
Просто разделите все до и включите base64,
(перед вызовом base64_decode()
по данным), и все будет в порядке.
$datetime = date("Y-m-d h:i:s");
$timestamp = strtotime($datetime);
$image = $_POST['image'];
$imgdata = base64_decode($image);
$f = finfo_open();
$mime_type = finfo_buffer($f, $imgdata, FILEINFO_MIME_TYPE);
$temp=explode('/',$mime_type);
$path = "uploads/$timestamp.$temp[1]";
file_put_contents($path,base64_decode($image));
echo "Successfully Uploaded->>> $timestamp.$temp[1]";
Этого будет достаточно для обработки изображений. Особая благодарность г-ну. Dev Karan Sharma
blockquote>
, возможно, это
function save_base64_image($base64_image_string, $output_file_without_extension, $path_with_end_slash="" ) {
//usage: if( substr( $img_src, 0, 5 ) === "data:" ) { $filename=save_base64_image($base64_image_string, $output_file_without_extentnion, getcwd() . "/application/assets/pins/$user_id/"); }
//
//data is like: data:image/png;base64,asdfasdfasdf
$splited = explode(',', substr( $base64_image_string , 5 ) , 2);
$mime=$splited[0];
$data=$splited[1];
$mime_split_without_base64=explode(';', $mime,2);
$mime_split=explode('/', $mime_split_without_base64[0],2);
if(count($mime_split)==2)
{
$extension=$mime_split[1];
if($extension=='jpeg')$extension='jpg';
//if($extension=='javascript')$extension='js';
//if($extension=='text')$extension='txt';
$output_file_with_extension=$output_file_without_extension.'.'.$extension;
}
file_put_contents( $path_with_end_slash . $output_file_with_extension, base64_decode($data) );
return $output_file_with_extension;
}
if($_SERVER['REQUEST_METHOD']=='POST'){
$image_no="5";//or Anything You Need
$image = $_POST['image'];
$path = "uploads/$image_no.png";
file_put_contents($path,base64_decode($image));
echo "Successfully Uploaded";
}
простой способ, которым я пользуюсь:
file_put_contents($output_file, file_get_contents($base64_string));