Все, я использую это поле ввода:Недопустимый тип смещения при загрузке файла PHP
<input type="file" name="image_to_upload_image" accept="image/*">
Я затем пытается обработать загрузку файла с помощью следующего кода:
if ($_FILES["image_to_upload_image"]) {
echo "it will try and upload";
$file = $_FILES["image_to_upload_image"];
print_r($file);
$newupload = bmt_handle_attachment_new_post($file,$post_id);
echo "The newupload is: ".$newupload;
set_post_thumbnail($post_id, $newupload);
}
который вызывает следующую функцию:
function bmt_handle_attachment_new_post($file_handler,$post_id,$set_thu=false) {
// check to make sure its a successful upload
if ($_FILES[$file_handler]['error'] !== UPLOAD_ERR_OK) __return_false();
require_once(ABSPATH . "wp-admin" . '/includes/image.php');
require_once(ABSPATH . "wp-admin" . '/includes/file.php');
require_once(ABSPATH . "wp-admin" . '/includes/media.php');
$attachment_id = media_handle_upload($file_handler, $post_id);
if (is_wp_error($attachment_id)) {
// There was an error uploading the image.
} else {
// The image was uploaded successfully!
}
// If you want to set a featured image from your uploads.
return $attachment_id;
}
я делаю то же самое, как в этом примере: http://codex.wordpress.org/Function_Reference/media_handle_upload
Почему это говорит о незаконном смещении типа?
UPDATE: У меня есть другая форма, которая имеет такое же поле ввода за исключением того, обрабатывает загрузки нескольких файлов:
<input type="file" name="kv_multiple_attachments[]" multiple="multiple" >
Если я затем передать его в следующем виде обработчика:
if ($_FILES) {
$files = $_FILES["kv_multiple_attachments"];
$gallery_id = $_POST['gallery_for_upload'];
foreach ($files['name'] as $key => $value) {
if ($files['name'][$key]) {
$file = array(
'name' => $files['name'][$key],
'type' => $files['type'][$key],
'tmp_name' => $files['tmp_name'][$key],
'error' => $files['error'][$key],
'size' => $files['size'][$key]
);
$_FILES = array ("kv_multiple_attachments" => $file);
foreach ($_FILES as $file => $array) {
$newupload = bmt_handle_attachment($file,$pid,$gallery_id);
//$thumb_url = wp_get_attachment_thumb_url($newupload);
//echo "<img src=".$thumb_url.">";
}
}
}
}
Затем используйте одна и та же функция обработки:
function bmt_handle_attachment($file_handler,$post_id,$gallery_id,$set_thu=false) {
// check to make sure its a successful upload
if ($_FILES[$file_handler]['error'] !== UPLOAD_ERR_OK) __return_false();
require_once(ABSPATH . "wp-admin" . '/includes/image.php');
require_once(ABSPATH . "wp-admin" . '/includes/file.php');
require_once(ABSPATH . "wp-admin" . '/includes/media.php');
$attachment_id = media_handle_upload($file_handler, $post_id);
update_post_meta($attachment_id, 'bmt_gallery_id', $gallery_id);
// If you want to set a featured image frmo your uploads.
return $attachment_id;
}
Файлы загружаются без проблем.
Что такое '$ post_id'? Почему вы передаете '$ _FILES [" image_to_upload_image "]' как '$ file_handler', а затем выполняете' $ _FILES [$ file_handler] '? –
@ Fred-ii- Это была ошибка копирования и вставки. Вопрос обновляется. – user1048676
Посмотрел хорошо в то время;) * 1 комментарий удален * –