HTTP文件上载适用于1个文件,但没有其他文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP文件上载适用于1个文件,但没有其他文件相关的知识,希望对你有一定的参考价值。
我正在一个使用数据库获取产品图像的网站上工作。一切正常,所以我想制作一个页面,轻松地将图像文件从我的本地桌面传输到我的ftp.server。现在这个奇怪的事情发生了,我无法弄清楚为什么。
在测试阶段,我继续尝试使用一个特定的文件“haircut.jpg”。只需一张随机图片即可下载。一段时间后,页面工作,我可以将该文件“haircut.jpg”上传到我的ftp服务器。
现在我想开始使用该页面将更多图像上传到我的ftp服务器,但只有图像“haircut.jpg”才有效。我尝试的每个其他图像都失败了,它给了我下一个错误:
警告:ftp_put(kabouter.jpg):无法打开流:没有这样的文件或目录...
我真的不知道这可能是什么。我从我的ftp-server中删除了“haircut.jpg”文件,但我可以一次又一次地上传它,它总是有效的。我试过用另一个浏览器;同样的问题还在继
其他文件在EXACT相同的文件夹中,大小相同(我尝试越来越大)。我用.jpg尝试了其他文件。我试过其他文件夹。不工作,只是一个特定的“haircut.jpg”工作。
我用于ftp-transfer的所有代码如下:
//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);
我认为下一段代码不会导致问题,但无论如何我都会发布:
//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;
}
这是FTP传输实际发生的:
//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);
我希望有人认识到这个问题并且能够帮助我。我现在很无能为力。
"name"
数组的$_FILES
元素不包含您可以阅读的文件的名称!它是用户客户端计算机上的文件名,而不是服务器上的名称。
上载文件暂时存储在服务器上的文件的文件名位于"tmp_name"
元素中。
您必须在php文件所在的文件夹中包含一些遗忘的"haircut.jpg"
副本。
只需用"name"
(随机名称)替换用于访问该文件的"tmp_name"
的所有实例。保持(漂亮)"name"
,你处理FTP路径。
有关$_FILES
的结构,请参阅POST method uploads。
以上是关于HTTP文件上载适用于1个文件,但没有其他文件的主要内容,如果未能解决你的问题,请参考以下文章
plupload 似乎没有在 IE 9 中上传文件。它适用于其他浏览器
Asp.net http 处理程序文本文件下载问题。适用于代码隐藏
iOS 不会在一台设备上请求 AASA 文件,但适用于所有其他设备
Bootstrap 4 和 Rails 6:$(...).modal 不是“.js.erb”文件中的函数(但适用于其他 .js 文件?)[关闭]