W jaki sposób przerzucić plik z jednego inputa do inputa w kolejnym oknie dialogowym ?

0

Chcę dać użytkownikowi możliwość wrzucenia pliku w pierwszym lub drugim kroku. Mógłbym przeprowadzić upload w pierwszym roku i później to sprawdzać itd. ale jest z tym za dużo zamieszania, bo są dosyć powalone zależności porobione, jak user anuluje to by trzeba było wywalić ten obrazek itd.

Domyślam się, że gdzieś są te obrazki w formie plików tmp przetrzymywane? Czy można przeprowadzić taką operację jak w temacie, czyli przerzucić plik pomiędzy dwoma inputami i dopiero w drugim wykonać upload??

1

a czy pomiędzy krokami dokonujesz przeładowania strony? jak tak - to się nie da. musiałbyś odebrać
jak nie - to zwykłe jQuerowe

$('#cel_umieszczenia').append($('#input_z_plikiem'));

przeniesie inputa wraz z wybranym plikiem w razie potrzeby

jeżeli mówisz tylko i wyłącznie o rozwiązaniach serwerowych no to sam musisz odebrać plik i sam go gdzieś przetrzymać - php po zakończeniu działania skryptu wywali pliki uploadowane z tmp od razu

0

Oto rozwiązanie (Zend Framework 1.12, natomiast z normalnym php logika jest podobna):

$("#add_protocol_scan").submit(function(e) {
            e.preventDefault();
            queryActionAndEmail('<?php echo $this->contact_id; ?>', '<?php echo $this->developer_id; ?>', '<?php echo $this->investment_id; ?>');
});

//Gdzieś tam zakopana...
function queryActionAndEmail(contactId, developerId, investmentId){

    var fileSelect = document.getElementById('protocol_scan');
    var files = fileSelect.files;
    var formData = new FormData();

    formData.append('file', files[0]);
    formData.append('contact_id', contactId);
    formData.append('developer_id', developerId);
    formData.append('investment_id', investmentId);

    showPreloader();
    $.ajax({
        url: "/query/index/query-action-and-email/",
        data: formData,
        cache: false,
        contentType: false,
        processData: false,
        type: 'post',
        success: function(data) {
//cos tam dalej
     }
});
/**
         * Firstly unlinks all previous tmp files (if exists)
         * Secondly creates tmp file for second dialog
         */
        $user = Zend_Registry::get('user');
        $path = APPLICATION_PATH . '/data/client/' . $user->getUserCid();
        $documentPath = $path . '/documents/documents/';

        foreach (glob($documentPath.'tmp_protocol_*') as $filename) {
            unlink($filename);
        }

        $upload = new Zend_File_Transfer_Adapter_Http();
        $files = $upload->getFileInfo();

        if (!empty($files)) {
            $files['file']['name'] = 'tmp_protocol_' . md5($files['file']['name'] . rand(0, 99999));
            $upload->addFilter('Rename', $documentPath . $files['file']['name']);
            if ($upload->isUploaded($file) && $upload->isValid($file)) {
                $upload->receive($file);
            }
        }

Później pobieramy ten plik i wrzucamy do inputa.

1 użytkowników online, w tym zalogowanych: 0, gości: 1