【发布时间】:2016-06-14 15:54:50
【问题描述】:
我有一个基本的 php 文件上传脚本,直到最近它一直运行良好。没有对上传脚本进行任何更改。通过测试/故障排除,我注意到如果 jpeg 图像方向为横向(宽于高)并且文件大于 4.5MB,则下载锁定在上传文件的 7% 左右。如果我将图像旋转为纵向并保持文件大小不变,或者如果我减小图像大小并将其保持为横向,则上传完成。
让我感到困惑的是,纵向的较大文件可以正常上传,将文件上传到服务器时图像方向重要吗?
首先我使用 Javascript 和 AJAX 来设置上传,然后调用 php 脚本。 Javascript/AJAX 是:
function uploadFile()
{
var formdata = new FormData();
var location=document.getElementsByName("file");
var file = location[0].files[0];
formdata.append("file", file,location[0].id+"_"+date+"."+file.type.substring(file.type.indexOf("/")+1));
var ajax = new XMLHttpRequest();
_("progressBar").style.visibility="visible";
ajax.upload.addEventListener("progress", progressHandler, false);
ajax.addEventListener("load", completeHandler, false);
ajax.addEventListener("error", errorHandler, false);
ajax.addEventListener("abort", abortHandler, false);
ajax.open("POST", "as_built_replace_uploader.php");
ajax.send(formdata);
}
我的上传PHP是:
$filename = $_FILES["file"]["name"];
$file_tmp_loc = $_FILES["file"]["tmp_name"]; // File in the PHP tmp folder
$file_type = $_FILES["file"]["type"]; // The type of file it is
$file_size = $_FILES["file"]["size"]; // File size in bytes
$file_error_msg = $_FILES["file"]["error"]; // 0 for false... and 1 for true
$wildcard="maps/".substr($filename,0,strpos($filename,"."))."*";
foreach (glob($wildcard) as $path)
{
unlink($path);
}
if(move_uploaded_file($file_tmp_loc,"maps/".$filename))
【问题讨论】:
-
请在您的问题中添加php文件上传脚本代码
-
考虑到 PHP 在上传期间甚至没有读取文件,我会在其他地方搜索该问题。也许您有一个客户端库来处理图片或介于两者之间的非常挑剔的安全软件。 (我还注意到您阅读了
$_FILES["file"]["error"],但似乎没有使用它——它甚至不是评论所说的 0 或 1。) -
一开始我使用 $_FILES["file"]["error"] 进行故障排除,但目前没有。那么你是说在我的 PHP 脚本启动之前的 AJAX 事务期间就发生了挂断吗?