繁体   English   中英

用php xml上传文件

[英]file uploading with php xml

我对此代码有问题。 问题在于脚本的上载部分,当用户保存信息时,脚本不会上载文件。 也许我犯了一些错误? xml文件可以正常工作,并且将保存所有新插入的信息。 我有两个文件输入来分开文件。.我认为问题与此有关。

<?php
if(isset($_POST['savetrack'])){

 $errors= array();
foreach($_FILES['audio_file']['tmp_name'] as $key => $tmp_name ){
    $Audiofile_name = $key.$_FILES['audio_file']['name'][$key];
    $Audiofile_size =$_FILES['audio_file']['size'][$key];
    $Audiofile_tmp =$_FILES['audio_file']['tmp_name'][$key];
    $Audiofile_type=$_FILES['audio_file']['type'][$key];

    $audioextensions = array("mp3");

$Audiofile_ext=explode('.',$_FILES['audio_file']['name'][$key]) ;
$Audiofile_ext=end($Audiofile_ext);  
$Audiofile_ext=strtolower(end(explode('.',$_FILES['audio_file']['name'][$key])));  
if(in_array($Audiofile_ext,$audioextensions ) === false){
$errors[]="extension not allowed";
}            

    if($file_size > 50097152){
        $errors[]='File size must be less than 50 MB';
    }       
    $desired_dir="mp3";
    if(empty($errors)==true){
        if(is_dir("$desired_dir/".$Audiofile_name)==false){
            move_uploaded_file($Audiofile_tmp,"mp3/".$Audiofile_name);
        }else{                                  //rename the file if another one exist
            $new_dir="mp3/".$Audiofile_name.time();
             rename($Audiofile_tmp,$new_dir) ;  
        }           
    }else{
            print_r($errors);
    }
}

//封面上传

foreach($_FILES['cover_file']['tmp_name'] as $key => $tmp_name ){
    $Imgfile_name = $key.$_FILES['cover_file']['name'][$key];
    $Imgfile_size =$_FILES['cover_file']['size'][$key];
    $Imgfile_tmp =$_FILES['cover_file']['tmp_name'][$key];
    $Imgfile_type=$_FILES['cover_file']['type'][$key];

    $imgextensions = array("jpeg","jpg","png");

    $Imagefile_ext=explode('.',$_FILES['cover_file']['name'][$key]) ;
$Imagefile_ext=end($Imgfile_ext);  
$Imagefile_ext=strtolower(end(explode('.',$_FILES['cover_file']['name'][$key])));  
if(in_array($Imgfile_ext,$imgextensions ) === false){
$errors[]="extension not allowed";
}

    if($Imgfile_size > 50097152){
        $errors[]='File size must be less than 50 MB';
    }       
    $desired_imgdir="img";
    if(empty($errors)==true){
        if(is_dir("$desired_imgdir/".$Imgfile_name)==false){
            move_uploaded_file($Imgfile_tmp,"img/".$Imgfile_name);
        }else{                                  //rename the file if another one exist
            $imgnew_dir="img/".$Imgfile_name.time();
             rename($Imgfile_tmp,$imgnew_dir) ; 
        }           
    }else{
            print_r($errors);
    }
}  

$xml = new DOMDocument('1.0', 'utf-8');
$xml->formatOutput = true;
$xml->preserveWhiteSpace = false;
$xml->load('tracks.xml');

$filenameAudio = $_FILES['audio_file']['name']; 

$element = $xml->getElementsByTagName('track')->item(0);

$artistname = $element->getElementsByTagName('artist')->item(0);
$tracktitle = $element->getElementsByTagName('title')->item(0);
$relyear = $element->getElementsByTagName('year')->item(0);
$relabel = $element->getElementsByTagName('label')->item(0);
$cover = $element->getElementsByTagName('cover')->item(0);    
$audio = $element->getElementsByTagName('audio')->item(0);

$newItem = $xml->createElement('track');
$newItem->appendChild($xml->createElement('artist',      $_POST['artist_name']));
$newItem->appendChild($xml->createElement('title', $_POST['track_title']));
$newItem->appendChild($xml->createElement('year', $_POST['year']));
$newItem->appendChild($xml->createElement('label',    $_POST['record_label']));
$newItem->appendChild($xml->createElement('cover',$Imgfile_name));
$newItem->appendChild($xml->createElement('audio',$Audiofile_name));
$xml->getElementsByTagName('releases')->item(0)->appendChild($newItem);
$xml->save('tracks.xml');
?>

我已经找到了通过使用上载类的解决方案,它似乎可以工作。 现在的问题是在我需要的地方加载上传的音频文件,慰问给我以下错误:

未捕获(承诺)DOMException:无法解码音频数据GET http:// localhost:8810 / mixtape / mp3 / audiofile 404(未找到)

我不知道此问题是否是因为文件名是从保存到xml中的标签加载的,或者是否存在另一种类型的问题。 如果我手动插入文件位置,它将起作用,但是我需要从xml加载它。

这是我需要加载mp3文件的html代码,我已经插入了托管上传的mp3的路径,但未成功。

<ul class="grid">
<?php
try{
$xml=simplexml_load_file("tracks.xml") or die("Error: Cannot create    object");
}catch (Exception $e){
echo $e;
} 
foreach($xml as $child)
{
$artistname = $child->artist;
$tracktitle = $child->title;
$relyear = $child->year;
$label = $child->label;
$audiofile = $child->audio;
$coverfile = $child->cover;
?>
<li class="grid__item">     
<a class="grid__link" href="#album" data-playlist-1="mp3/<?php echo  $audiofile ?>" data-playlist-2="mp3/<?php echo $audiofile ?>"> 
<div class="img-wrap img-wrap--grid">
<svg class="lp lp--grid">
<use xlink:href="#icon-lp-mini"></use>
</svg>
<img class="img img--grid" src="img/<?php echo $coverfile ?>" alt="album cover" />
</div>
<span class="year"><?php echo $relyear ?></span>
<h2 class="artist"><?php echo $artistname ?></h2>
<h3 class="title"><?php echo $tracktitle ?></h3>
</a>
</li>
<?php } ?>
</ul>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM