Moin Leute
in einem Plugin soll der der Upload von TXT-Dateien ermöglcht werden, damit diese dann verarbeitet und in Tabellenform angezeigt bzw. als CSV zum Download bereitgestellt werden.
Da WP per Core TXT-Files nicht zulässt, würde ich dieses gerne im Plugin erlauben.
Hierzu gibt es ja add_filter um die Mime-Types zu verwalten.
Leider komme ich an der Stelle nicht richtig weiter:
wenn ich das Plugin aktiviere und im Browser anschliessend direkt auf Upload gehe, funktioniert es. Die TXT-Datei wird ins .../wp-content/uploads/... übernommen
wenn ich den Browser aber schliesse und wieder starte und dann den Upload erneut versuche, dann funktioniert er nicht "Sorry, you are not allowed to upload this file type." **
verstehe die Logik nicht. Prinzipiell scheint es ja zu funktionieren (nach Aktivierung vom Plugin und solange der Browser dann nicht geschlossen wird)
wieso dann nach erneutem Browserstart dann wieder Filetype nicht erlaubt ?
zentrale Plugin-Steuerungsdatei :
...
// //actions
add_shortcode('nkt2c', 'nkt2c_forms');
add_filter( 'nkt2c_mimes', 'nkt2c_mime_types' );
add_action( 'wp_enqueue_scripts', 'add_nkt2c_css' );
add_action( 'wp_enqueue_scripts', 'add_nkt2c_js' );
add_action( 'admin_menu', 'nkt2c_menu');
...
dann in der functions-Datei vom Plugin :
function nkt2c_mime_types( $nkt2c_mimes ) {
// $nkt2c_mimes = array(
// 'txt' => 'text/plain'
// );
// return $nkt2c_mimes;
// First we unregister the old key
unset( $mime_types['txt'] );
// Then we add a new one
! isset( $mime_types['txt'] ) AND $mime_types['txt'] = 'text/plain';
return $mime_types;
}
function add_nkt2c_css() {
wp_register_style( 'nkt2c-css', '/wp-content/plugins/nkTxt2Csv/css/nkt2c-style.css' );
wp_enqueue_style( 'nkt2c-css', );
}
function add_nkt2c_js() {
wp_enqueue_script( 'nkt2c-js' , '/wp-content/plugins/' . NKT2C . '/js/nkt2c-script.js' );
}
function nkt2c_forms($atts, $content) {
$content = do_shortcode($content);
$nkt2c_tmp = apply_filters( 'nkt2c_mimes', 'txt' );
$nkt2c_ret = '
<form id="nkt2c_form_upload" class="nkt2c_form_upload" enctype="multipart/form-data" action="" method="POST">
';
$nkt2c_ret .= wp_nonce_field( 'nkt2c_file_upload', 'nkt2c_fileup_nonce' );
$nkt2c_ret .= '
<input name="nkt2c_file_upload" type="file" />
<input type="submit" value="Upload file" id="nkt2c_btn_upload" />
<div id="nkt2c_src">keine Daten vorhanden</div>
<div id="nkt2c_dst">keine Daten vorhanden</div>
<div id="nkt2c_download"></div>
</form>
';
if( wp_verify_nonce( $_POST['nkt2c_fileup_nonce'], 'nkt2c_file_upload' ) ){
if ( ! function_exists( 'wp_handle_upload' ) ) {
require_once ABSPATH . 'wp-admin/includes/file.php';
}
$nkt2c_file = & $_FILES['nkt2c_file_upload'];
$nkt2c_overrides = [ 'test_form' => false ];
$nkt2c_movefile = wp_handle_upload( $nkt2c_file, $nkt2c_overrides );
if ( $nkt2c_movefile && empty( $nkt2c_movefile['error'] ) ) {
echo "The file was successfully uploaded.";
//print_r( $nkt2c_movefile );
$nkt2c_txtfile = $nkt2c_movefile["file"];
print_r($nkt2c_txtfile);
}
else {
echo $nkt2c_movefile['error'];
}
}
//remove_filter('nkt2c_mimes', 'txt');
return $nkt2c_ret;
}
Vielen Dank im voraus für eure Unterstützung
VG
Norbert