Yii2上传一些文件,但有些文件未上传
在我的Yii网络中,我尝试上传mp3文件,但问题是有些文件被上传了,有些文件没有,我不知道它们的扩展名相同,大小相同,但没有上传;我的两个文件是 1-beautiful_小提琴.mp3,大小为394 KB,文件类型:mp3格式声音(.mp3) 2-吉他与小提琴.mp3,大小为400 KB,文件类型:mp3格式声音(.mp3) 第一首歌上传,第二首歌未上传;其他mp3也有这种情况,上传一些文件,有些文件不上传 我没有使用多个上传,我上传一个文件,每个帖子;这是单文件上传 我的模型是:Yii2上传一些文件,但有些文件未上传,yii2,yii2-advanced-app,Yii2,Yii2 Advanced App,在我的Yii网络中,我尝试上传mp3文件,但问题是有些文件被上传了,有些文件没有,我不知道它们的扩展名相同,大小相同,但没有上传;我的两个文件是 1-beautiful_小提琴.mp3,大小为394 KB,文件类型:mp3格式声音(.mp3) 2-吉他与小提琴.mp3,大小为400 KB,文件类型:mp3格式声音(.mp3) 第一首歌上传,第二首歌未上传;其他mp3也有这种情况,上传一些文件,有些文件不上传 我没有使用多个上传,我上传一个文件,每个帖子;这是单文件上传 我的模型是: public
public $PMediaFile;
public function rules()
{
return [
[['post_text'], 'string'],
[['post_crdate', 'post_update'], 'safe'],
[['post_status', 'post_likeplus', 'post_likemoin', 'permission_id', 'filestype_id', 'channel_id', 'user_id'], 'integer'],
[['permission_id', 'filestype_id', 'channel_id', 'user_id'], 'required'],
[['post_title', 'post_uid'], 'string', 'max' => 300],
[['post_file', 'post_thimage', 'post_bgimage', 'post_cssclass', 'post_cssid'], 'string', 'max' => 350],
[['post_icon'], 'string', 'max' => 50],
[['post_title'], 'unique'],
[['PMediaFile'], 'file', 'skipOnEmpty' => false, 'extensions' => 'mp3', 'maxSize'=>2000000, 'tooBig' => 'Limit is 2M'],
[['channel_id'], 'exist', 'skipOnError' => true, 'targetClass' => Channel::className(), 'targetAttribute' => ['channel_id' => 'channel_id']],
[['filestype_id'], 'exist', 'skipOnError' => true, 'targetClass' => Filestypes::className(), 'targetAttribute' => ['filestype_id' => 'filestype_id']],
[['permission_id'], 'exist', 'skipOnError' => true, 'targetClass' => Permission::className(), 'targetAttribute' => ['permission_id' => 'permission_id']],
[['user_id'], 'exist', 'skipOnError' => true, 'targetClass' => User::className(), 'targetAttribute' => ['user_id' => 'user_id']],
];
}
在我的控制器中
$isMember = AxChnPermission::ChannelMemberChnNID($this->chn_nid);
if ($isMember)
{
$model = new PostMedia(); $model_Permission = new Permission;
$chn_id = $isMember->channel->channel_id;
$chn_uid = $isMember->channel->channel_uid;
$chn_folder = $isMember->channel->channel_folder;
if ($model->load(Yii::$app->request->post()) )
{
AxPostMedia::CreateMedia($model, $chn_id, $chn_folder);
header('Location: ' . Url::current() );
exit;
}
return $this->render('/post-insert/widget/_formInsertMedia', [
'model' => $model,
'model_Permission' => $model_Permission,
]);
}
AxPostMedia:
class AxPostMedia
{
public function UploadAudio($MPMEDIA, $MAUDIO, $ly_MediaName, $ly_MediaFolder)
{
mkdir($ly_MediaFolder, 0777, true);
$MPMEDIA->PMediaFile->saveAs($ly_MediaFolder .'/'. $ly_MediaName . '.' . $MPMEDIA->PMediaFile->extension);
$MAUDIO->audio_path = $ly_MediaFolder .'/'. $ly_MediaName . '.' . $MPMEDIA->PMediaFile->extension;
$MAUDIO->save(false);
}
public static function CreateMedia($MPMEDIA, $CHNID, $chn_folder)
{
$USRID = Yii::$app->user->id;
$css_and_folder = AxValuePost::CssID();
$MPMEDIA->user_id = $USRID;
$MPMEDIA->channel_id = $CHNID;
$MPMEDIA->post_uid = AxValuePost::PSTUID();
$MPMEDIA->post_cssid = AxValuePost::CssID();
$MPMEDIA->post_update = time();
$ly_MediaName = AxValuePost::FileName();
$MPMEDIA->PMediaFile = UploadedFile::getInstance($MPMEDIA, 'PMediaFile');
if ($MPMEDIA->PMediaFile->extension == 'mp3')
{
$MPMEDIA->filestype_id = 300;
}
$ly_MediaFolder = AxValuePost::PostFolder($chn_folder, $css_and_folder, $MPMEDIA->PMediaFile->extension);
if ($MPMEDIA->PMediaFile->extension === 'mp3')
{
if ($MPMEDIA->save())
{
$MAUDIO = new Audio;
$MAUDIO->post_id = $MPMEDIA->post_id;
$MAUDIO->channel_id = $CHNID;
$MAUDIO->user_id = $USRID;
(new self)->UploadAudio($MPMEDIA, $MAUDIO, $ly_MediaName, $ly_MediaFolder);
}
}
return $MPMEDIA->save(false);
}
}
我的看法是:
<?php $form = ActiveForm::begin(['options' => ['id' => 'upload-media-form', 'enctype' => 'multipart/form-data']]) ?>
<?= $form->field($model, 'PMediaFile')->fileInput() ?>
<?= $form->field($model, 'post_text')->textarea(['rows' => 2]) ?>
<?= $form->field($model, 'permission_id')->dropdownList($model_Permission->PermissionType()) ?>
<div class="text-right"><?= Html::submitButton(Yii::t('app', 'Save'), ['class' => 'btn btn-success']) ?></div>
<?php ActiveForm::end(); ?>
在一次性或逐个上载多个文件时,您是否会出现这种行为?如果不上载文件,是否会显示任何错误?这是否是按顺序发生的,即每第2次或第3次尝试或特定文件的情况?逐个上载文件我不使用多次上载如果您已安装ffmpeg
,您可以检查文件是否为有效的mp3格式。我将尝试安装它