better create some gists at gist.gthub.com and send some links to them as this 
source is unreadable… 

please include all (relevant) source. Specifically the source of the 
MusicUploadForm class



On 17 aug. 2013, at 11:50, Sandeep Singh <[email protected]> wrote:

> Hi,
> 
> I am working on a project using zend framework and i am stuck with a
> problem. I have to upload three files via a single form. The files must be
> mp3. Only one of them is compulsary . I was able to do study about it but
> still few bugs in my code.
> 
> 
> If i upload three files with same name then only one is uploaded as the
> portion where i recieve the files is working using name of file and i think
> recieveing all the files as the name is same for them.
> 
> Also i am not able to make the first upload file compulsary .
> 
> 
> Below is th code i have wrriten.
> 
> 
> 
> ===============   Controller =====================
> 
> 
> 
> $form = new MusicUploadForm();
>        $form->get('submit')->setAttribute('value', 'Upload');
> $request = $this->getRequest();
>        if ($request->isPost()) {
> //preparing form and setting validatores
>            $musicupload = new Musics();
> $form->setInputFilter($musicupload->getInputFilter());
> //fetching the data files and non files
> $nonFile = $request->getPost()->toArray();
> $Files = $request->getFiles()->toArray();
> //checking for form validation
> $data = array_merge(
>                 $nonFile,
>                 $Files
>             );
> $form->setData($data);
>  if ($form->isValid()) {
> 
>  //setting the validators, adapters and filters
> $adapter = new \Zend\File\Transfer\Adapter\Http();
> $validator = new \Zend\Validator\File\MimeType('audio/mpeg');
> $filter = new \Zend\Filter\File\Rename(array(
> "target"    => "public/songs/song.mp3",
> "randomize" => true,
> ));
>  //applying validators
> foreach($Files as $key1 => $File){
> if((int)$File['error'] == 0){
> $adapter->setValidators(array($validator), $File['name']);
> if (!$adapter->isValid($File['name'])){
> $dataError = $adapter->getMessages();
> $error = array();
> foreach($dataError as $key=>$row)
> {
> $error[] = $row;
> }
> $form->setMessages(array( $key1 => $error ));
> }
> }
> 
> $adapter->clearValidators();
> }
> 
> if(!isset($error)){
> $upload->setDestination('public/songs');
> // saving to db
> foreach($Files as $key => $File){
> if ($adapter->receive($File['name'])) {
> $newName = $filter->filter($adapter->getFileName($File['name']));
> $record = array();
> $record['org_name'] = $File['name'];
> $record['temp_name'] = $newName;
> $record['first_name'] = $data['first_name'];
> $record['last_name'] = $data['last_name'];
> $this->getMusicsTable()->addMusic($record);
> }
> }
> $this->flashMessenger()->addSuccessMessage('Songs successfully uploaded.');
> return $this->redirect()->toRoute('listmusic');
> }
> }
> }
> 
> 
> 
> 
> 
> 
> 
> ===========filter for input type file ===================
> 
> 
> $inputFilter->add(
>                $factory->createInput(array(
>                    'name'     => 'song_1',
>                    'required' => true,
>                ))
>            );
> 
> 
> 
> 
> I need this done very quickly. Any kind of help is much much appriciated.
> 
> 
> 
> 
> 
> 
> Thanks


--
List: [email protected]
Info: http://framework.zend.com/archives
Unsubscribe: [email protected]


Reply via email to