uyumsuz yüklemek ama bir yüklemenizde iki dosyayı eşleştirmek jQuary

oy
0

Ben yüklemek istediğiniz kadar dosya olarak (sadece .xml ve .yml dosyaları) seçerek sağlayan bir dosya yükleme formu var. Form blueimp en oluşturulur jQuery Dosya yükle . Ben in Bilgisi kullanılan bu Soru herşey çalışıyor olsun.

.xml ve .yml dosyaları her zaman çift olarak gelir ve bir veri bloğuna farklı bilgiler içerir. Yüklenen dosyalar ayrı .php dosyası tarafından işlenir. İlgili dosya zaten yüklenmiş olmadığını Orada ben kontrol edin. Eğer durum buysa ben iki dosyayı işlemek için bir süreç başlar.

Bu çoğu durumda gayet iyi çalışıyor, ama bazen kablolu dönüş mesajları almak ve onu iki kez ayrıştırma ve süreç kodunu başlatmak mümkün olduğunu benziyor. Benim şüphe ikisi de varsa ilk dosya kontrol önce ilgili dosya sadece yüklenmesi tamamlandı olmasıdır. Sonra ilk dosya işlemi başlar ve ikinci dosya yanı başlatır.

function process_uploaded_data(&$response, $file_path) {
    $file_name = get_file_name($file_path);
    $yml_path = 'tmp/'. $file_name .'.yml';
    $xml_path = 'tmp/'. $file_name .'.xml';

    if(file_exists($xml_path) && file_exists($yml_path))
    {
        // parse and process yml and xml
    }
}

// A list of permitted file extensions
$allowed = array('xml', 'yml');

if(isset($_FILES['upl']) && 0 >= $_FILES['upl']['error']){

    $extension = pathinfo($_FILES['upl']['name'], PATHINFO_EXTENSION);

    if(!in_array(strtolower($extension), $allowed)) {
        $response['file'] = $_FILES['upl']['name'];
        $response['status'] = 'failed';
        echo json_encode($response);
        exit;
    }

    if(move_uploaded_file($_FILES['upl']['tmp_name'], 'tmp/'.$_FILES['upl']['name'])){
        $response['file'] = $_FILES['upl']['name'];
        $response['status'] = 'success';

        process_uploaded_data($response, 'tmp/'.$_FILES['upl']['name']);

        echo json_encode($response);
        exit;
    }
}

echo '{status:error}';
exit;

Bunu düzeltmek için, ben istemci tarafında iki dosyayı eşleştirmek ve aynı anda her iki dosya yüklemek istiyorum. Gibi sunucuların PHP komut yeniden yazma için bu JS dosyaları sorun yok, ama nasıl kontrol ederim ve grup?

Açıkçası, ben ertelemek zorunda var jqXHR = data.submit();içinde add: function. Ama bir kaç soru var:

  1. Nerede ve nasıl Seçilen dosyaların tam listesine erişim alabilirim?

  2. Ben gelen dosyaları eşleştirme yaptıktan sonra, nasıl bir iki dosya yüklemesini tetikleyebilir?

İşte benim yükleme formundan daha küçük bir versiyonu:

<!DOCTYPE html>
<html>
<head>
    <script src=javascripts/modernizr.js></script>
    <script src=javascripts/respond.min.js></script>
    <script src=javascripts/prefixfree.min.js></script>
    <script src=javascripts/jquery-3.4.1.min.js></script>

    <script src=javascripts/vendor/jquery.ui.widget.js></script>
    <script src=javascripts/jquery.iframe-transport.js></script>
    <script src=javascripts/jquery.fileupload.js></script>

    <script>
        $(function() {
            var ul = $('#upload ul');

            $('#upload').fileupload({
                url: 'sql_upload.php',
                dataType: 'text',
                type: 'post',

                // This function is called when a file is added to the queue
                add: function (e, data) {                   
                    //This area will contain file list and progress information.
                    var tpl = $('<li><p class=file_name></p></li>');

                    // Append the file name and file size
                    tpl.find('p').text(data.files[0].name);

                    // Add the HTML to the UL element
                    data.context = tpl.appendTo(ul);

                    // Automatically upload the file once it is added to the queue
                    var jqXHR = data.submit();
                },
                success: function(php_script_response){
                    console.log(php_script_response);
                }
            });
        })
    </script>
</head>
<body>
    <form id=upload enctype=multipart/form-data>
        <input type=file name=upl multiple />
        <ul id=fileList>
            <!-- The file list will be shown here -->
        </ul>
    </form>
</body>
</html>
Oluştur 24/10/2019 saat 12:53
kaynak kullanıcı
Diğer dillerde...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more