这是我的代码:
HTML:
<form id="form_id" action="#" accept-charset="UTF-8" enctype="multipart/form-data">
<div>
<label for="files" class="drop-files-container">drag here</label>
<input id="files" type="file" name="file[]" style="visibility:hidden;">
</div>
</form>
JavaScript的:
$('#files').on('change',function() {
var files = $(this)[0].files;
processFileUpload(files);
return false;
});
function processFileUpload(droppedFiles) {
var uploadFormData = new FormData($("#form_id")[0]);
if(droppedFiles.length > 0) {
for(var f = 0; f < droppedFiles.length; f++) {
uploadFormData.append("file",droppedFiles[f]);
}
}
$.ajax({
url : "compareList.php",
type : "POST",
data : uploadFormData,
contentType: "application/x-www-form-urlencoded;charset=utf-8",
cache : false,
contentType : false,
processData : false,
dataType : "json",
success : function(data) {
console.log(data);
}
});
}
PHP:
$arr = array();
$file = $_FILES['file'];
$handle = fopen($file, "r");
header('HTTP/1.1 500 Internal Server Booboo');
header('Content-Type: application/json; charset=UTF-8');
die(json_encode(array('message' => 'ERROR', 'code' => 1337)));
我的代码返回:
警告:fopen()要求参数1为有效路径,在 C:\ xampp \ htdocs \ comparelist_php \ compareList.php 中的行 6
{&#34;消息&#34;:&#34; ERROR&#34;&#34;代码&#34;:1337}
我该如何解决?
答案 0 :(得分:1)
问题是$_FILES['file']
是一个数组,您必须使用$_FILES['file']['tmp_name']
。
全局
$_FILES
将包含所有上传的文件信息。 其示例形式的内容如下。请注意这一点 假定使用文件上载名称userfile,如中所使用的 上面的示例脚本。这可以是任何名称。
$_FILES['userfile']['name']
- 客户端计算机上文件的原始名称。
$_FILES['userfile']['type']
- 文件的mime类型,如果浏览器提供此信息。一个例子是&#34; image / gif&#34;。然而,这种哑剧类型不会在PHP方面进行检查,因此不会将其价值视为理所当然。
$_FILES['userfile']['size']
- 上传文件的大小(以字节为单位)。
$_FILES['userfile']['tmp_name']
- 上传文件存储在服务器上的文件的临时文件名。
$_FILES['userfile']['error']
- 与此文件上传相关联的错误代码。