Ürün resimleri almak için bir veritabanı kullanan bir web sitesinde çalışıyorum. Her şey gayet iyi çalışıyor, bu yüzden görüntü dosyalarını yerel masaüstümden ftp.server dosyasına kolayca aktaran bir sayfa yapmak istedim. Şimdi bu gerçekten garip bir şey oluyor ve nedenini anlayamıyorum.HTTP dosya yükleme 1 dosya için çalışır, ancak başka dosya yok
Test aşamasındayken, belirli bir dosya "haircut.jpg" ile denemeye devam ettim. Sadece rastgele bir pic indirilmiş. Bir süre sonra, sayfa çalıştı ve ftp-sunucusuna bu dosyayı "haircut.jpg" yükleyebilirdim.
Şimdi ftp-sunucuma daha fazla resim yüklemek için sayfayı kullanmaya başlamak istiyorum ancak SADECE bu görüntü "haircut.jpg" çalışacaktır. Ben çalışsam diğer görüntü başarısız olur ve bana ertesi hata veriyor: Gerçekten bu ne olabileceğini hiçbir ipucu var
Warning: ftp_put(kabouter.jpg): failed to open stream: No such file or directory in...
. Ftp-sunucumdan "haircut.jpg" dosyasını sildim, fakat tekrar yüklemeye devam edebilirim, her zaman çalışır. Başka bir tarayıcıyla denedim; Aynı problem devam ediyor.
Diğer dosyalar, aynı boyutta (daha küçük ve daha büyük denedim) EXACT aynı klasöründedir. .jpg ile diğer dosyaları denedim. Diğer klasörleri denedim. Çalışmıyor, sadece belirli bir "haircut.jpg" çalışıyor. aşağıdaki gibi
Ben ftp-transferini kullanan tüm koddur:
//FTP:
$ftp_server = "ftpserver";
$ftp_username = "username";
$ftp_userpass = "password";
$remote_dir = "/test/";
$target_file = $remote_dir.basename($_FILES['afbeelding']["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file, PATHINFO_EXTENSION);
//Setup basic connection
//ftp_connect(host, port [def=21], timeout [def=90])
$ftpConn = ftp_connect($ftp_server) or die("Could not connect to $ftp_server");
$login = ftp_login($ftpConn, $ftp_username, $ftp_userpass);
Ben Sonraki kod bloğu soruna neden olmadığını düşünüyorum, ama ben yine de göndeririz:
//Check if image file is a actual image or fake image
if(isset($_POST["submit"]))
{
$check = getimagesize($_FILES['afbeelding']["name"]);
if($check !== false){
echo "File is an image - " . $check["mime"] . ".";
$uploadOk = 1;
}
else{
echo "File is not an image.";
$uploadOk = 0;
}
}
//Check if file already exists
if(in_array(basename($_FILES['afbeelding']["name"]), ftp_nlist($ftpConn, $remote_dir)))
{
echo "Sorry, file already exists.";
$uploadOk = 0;
}
//Check file size
if($_FILES['afbeelding']["size"] > 3000000)
{
echo "Sorry, your file is too large.";
$uploadOk = 0;
}
//Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif")
{
echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
$uploadOk = 0;
}
Bu
FTP transfer aslında sürer idi yer:
//Check if $uploadOk is set to 0 by an error
if($uploadOk == 0){
echo "<br>Sorry, your file was not uploaded.";
}
//If everything is OK, try to upload the file
else
{
//Check if ftp transfer was succesfull
if(ftp_put($ftpConn, $target_file, basename($_FILES['afbeelding']["name"]), FTP_ASCII)){
echo "The file ". basename($_FILES['afbeelding']["name"]). " has been uploaded.";
}
else {
"Sorry, there was an error uploading your file.";
}
}
//Remember to always close the ftp connection
ftp_close($ftpConn);
kimseye sorunu tanır ve umut bana yardımcı olabilir. Şu anda clueless.
Muhtemelen bunu zaten http://php.net/manual/en/function.ftp_put.php adresinde okuyorsunuz, ancak FTP_BINARY 'inin' FTP_ASCII 'olduğu yerde olması gerektiğini akla getiriyor gibi görünüyor. Daha önceki bir yükleme işlemiyle bir ASCII dosyasına dönüştürülmüş/bozuk olacak. '$ Targetfile' bir nedenden ötürü boş olabilir - aynı sayfada ftp_put 'ftp_pasv() 'da keşfedilmeye değmeden önce yankılamayı deneyin. – Steve
Bir sorun yaratabilecek olan "Üzgünüm, bir hata ..." öncesinde "yankı" eksik. – Steve
Bu, PHP FTP'yi yerel bir makineden uzak bir sunucu konumuna yükleyemeyeceğinizi gösterir - http://stackoverflow.com/questions/24709893/php-ftp-put-failed-to-open-stream?rq= 1 - Belki de bir dosya yükleme komutunu kullanarak, bir dosya yükleme komutunu seçip yüklemek için http://www.w3schools.com/php/php_file_upload.asp gibi bir dosya yükleme komut dosyasını düşünmeniz gerekir. Muhtemelen çalışkan olan, bir yerlerde geçici bir klasörde gizemli bir şansla gizleniyor ve böylece sunucu üzerinde kopyalanabilir. – Steve