文件上传100%后,就出现400错误了,请问哪里设置有问题呢?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
给你个例子参考:
1、前端,创建一个index.html
<form action="upload_file.php" method="post" enctype="multipart/form-data" target="hidden_frame">
<label for="file">Filename:</label>
<input type="file" name="file" id="file"><br>
<input type="submit" name="submit" value="Submit">
<iframe name='hidden_frame' id="hidden_frame" style='display:none'></iframe>
</form>
<script type="text/javascript">
function callback(code,info){
console.log(code+info);
}
</script>
2、后端,创建一个upload_file.php
$url = "/uploads/"; // 存储路径
$size = 2000000; // 文件大小
$allowedExts = array("gif", "jpeg", "jpg", "png","csv"); // 可上传的后缀名
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
if ( ($_FILES["file"]["size"] < $size) && in_array($extension, $allowedExts) ){
if ($_FILES["file"]["error"] > 0){
$return =array('code'=> '1','info'=> "Return Code: " . $_FILES["file"]["error"]);
}
else{
$newfile_url = $url.Date('YmdHis').'_'.$_FILES["file"]["name"];
move_uploaded_file($_FILES["file"]["tmp_name"],$newfile_url);
$return =array('code'=> '1','info'=> "Stored in: " . $newfile_url);
}
}
else{
$return =array('code'=> '0','info'=> 'Invalid File');
}
echo "<script>parent.callback('".$return['code']."','".$return['info']."')</script>";
好的我们来一一解析,这里我们看到前端提交是使用了 target="hidden_frame"
这个主要是指定hidden_frame对象来提交操作,避免页面刷新;
后台最后输出一个js脚本:
echo "<script>parent.callback('".$return['code']."','".$return['info']."')</script>";
这个主要是反馈回去调前端的一个callback函数:
<script type="text/javascript">
function callback(code,info){
console.log(code+info);
}
</script>
这样你可以再callback的函数里面写任何东西了,后台也可以传任何东西到前端来。