[Xupload] Come Si Modifica Il Nome Del File Che Si Carica?

Salve a tutti, uso Yii da qualche mese e per l’applicazione che sto sviluppando ho usato l’estensione XUpload per caricare file sul server dove risiede. Ora però ho bisogno di rinominare i file a seconda di un parametro passato tramite form immediatamente dopo l’upload da parte dell’estensione, ma non riesco a capire a che livello devo implementare la logica (o se devo modificare XUploadAction stessa).

Esempio:

Creazione di un model "Documento"

  1. L’utente seleziona da una tendina il tipo di documento “A”.

  2. Click su "Allega File" di XUpload e scelta di "MyDocument.doc".

  3. Il documento viene caricato dall’estensione con il nome “DocumentoA.doc” verso un path predefinito.

  4. Al termine dell’upload il form viene sottomesso al controller tramite js

  5. Il controller salva il model impostando "A" come attributo "Tipo".

Il punto in cui ho bisogno di aiuto è il n°3, precisamente la rinomina, in quanto in seguito dovrò recuperare questo documento e non posso prevedere il nome dell’originale caricato dall’utente.

Qualcuno può aiutarmi? Se non siete pratici di XUpload ma avete qualche soluzione allo stesso problema scrivete pure senza problema, grazie a tutti.

Ok, a chi potesse interessare ho rimediato evitando xupload dal momento che non ho necessità assoluta di utilizare un upload asincrono e ho sfruttato la classe CUploadedFile del framework. Aggiungendo queste righe nel metodo create del controller (nell’esempio il model è “Contratto”, l’input per il file è “allegato” e la regola per il filename è un campo denominato “descrizione”) il risultato è quello che cercavo:




			if(isset($_POST['Contratto']['allegato'])){

				$uploadedFile = CUploadedFile::getInstance($model, 'allegato');

				$fileName = $_POST['Contratto']['descrizione'];

				$uploadedFile->saveAs(Yii::app()->basePath . '/data/' . $fileName);


			}

Meno scenografico ma funzionante. Se qualcuno fosse più pratico di XUpload e riesce a spiegarmi come utilizzarlo per ottenere un risultato simile sono naturalmente interessato. Cheers!