Php çift dosyaları kontrol etmek için nasıl?

4 Cevap php

Ne gerçekten yapmak istiyorum aynı dosya bunu yapmak için verimli bir yol var, önce veya dosyayı yükledikten sonra varsa kontrol edilir?

Evet, işte bu!

Düzenleme: Aslında sürece dups algılayabilir gibi, onun ardından ise ya da daha önce fark etmez.

4 Cevap

EDIT: Üzgünüm Neler yapabileceğini yükleme düğmesi etkin önce sunucuyu sorgulamak için AJAX kullanmaktır ... ÖNCE dedi fark etmedi.

Senaryo:

function CreateRequest()
{
var xmlhttp = false;

if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
	try {
		xmlhttp = new XMLHttpRequest();
	} catch (e) {
		xmlhttp=false;
	}
}

if (!xmlhttp && window.createRequest) {
	try {
		xmlhttp = window.createRequest();
	} catch (e) {
		xmlhttp=false;
	}
}

if(!xmlhttp)
{
	alert("Could not create XmlHttpRequest. Browser does not support.");
}

return xmlhttp;
}


function validate()
{
    xmlhttp = CreateRequest();
    xmlhttp.open( "GET", "checkfile.php?file=" + document.getElementById('upload').value );
    xmlhttp.send( false );
    if( xmlhttp.responseText == "YES" )
        alert( "File already exists" );
    else
        document.getElementById('go').disabled = false;
}

HTML:

<input id="upload" type="file" name="upload" onchange="validate()"/>
<input name="Reset" type="submit" disabled=disabled id="go" value="Go"/>

PHP:

$file = basename( $_GET['file'] );
if( file_exists( "uploads/$file" ) )
    echo "YES";
else
    echo "NO";

PHP yükleme kendisi sorumludur ve komut dosyası zaten yüklenmiş noktada başlar çünkü, AJAX veya flaş kullanmadan yapamam. Birisi size yardımcı olabilir ben senin cevabını uygun etiketleri ekleyeceksiniz

Sadece birkaç seçenek var:

  • Eğer kullanıcı yüklemeden önce bilmek istiyorsanız, zaten (dostu gerçekten kullanıcı) bir dosya varsa o zaman sunucu tarafında kontrol, ona dosyanın MD5 toplamını isteyin.
  • Dosya benzersiz bir adı varsa, Eğer (çok kullanıcı dostu) yüklemeden önce dosyanın adını sormak
  • Eğer kullanıcı önce yüklenen dosya olamaz (gerçekten ne istediğinizi ...)

Eğer tercih birini seçin!

Diğerleri önce mümkün değil, işaret gibi yüklemeden önce kontrol vardır. Dosya yüklendikten sonra Ama, dosyaların MD5 hash karşılaştırmak gerekir.

Bunun yerine tekrar tekrar bir dosyanın MD5 hash hesaplama, size sonuçlarını önbelleğe ettiği bir veritabanında tutarak düşünebiliriz. Yani daha fazla ölçülebilir olmalıdır.