在后端使用Laravel尝试上传文件时遇到问题.
Laravel $request->file()方法返回null.
我使用superagent构建了一个AJAX请求,调试了请求,一切似乎都很好.在Content-Length根据我在图像上添加的变化,指示图像已被添加到该请求.该Content-Type也被设置为multipart/form-data.
// request headers
Content-Length:978599
Content-Type:multipart/form-data;
// request payload
Content-Disposition: form-data; name="files"; filename="item-keymoment.png"
Content-Type: image/png
Run Code Online (Sandbox Code Playgroud)
但是我无法在Laravel中获取该文件.使用$request->file('files')返回NULL,但如果我调试$_FILES数组,我注意到我的文件已上传.
dd($request->file('files'))
// NULL
dd($_FILES);
// array:1 [
// "files" => array:5 [
// "name" => "item-keymoment.png"
// "type" => "image/png"
// "tmp_name" => "/tmp/phpipbeeM"
// "error" => 0
// "size" => 978274
// ]
// ]
dd($request->files->all())
// []
Run Code Online (Sandbox Code Playgroud)
什么可能导致Laravel忽略该文件?
Content-Type输入文件不是application/octet-stream? …
我有一个文件对象列表,如:
var files = [File, File, File]
Run Code Online (Sandbox Code Playgroud)
我想将其转换为:
我有一个文件字段,我想将其files作为FileList对象映射.
var uploading_files = {}
files.forEach(function(file, key) {
uploading_files[key] = file
})
var uploader = document.getElementById('uploader')
uploader.files = uploading_files
console.log(uploader.files)
Run Code Online (Sandbox Code Playgroud)
但它没有给我FileList反对?如何创建文件列表objecdt?提前致谢..
<input id='f' name='f' multiple />
Run Code Online (Sandbox Code Playgroud)
我允许用户选择多个文件(来自不同的文件夹)进行上传.我按照此处的描述构建了所选文件的列表.基本上,所选文件的列表保持在INPUT控件之外,并f.files在提交时填充回来.
每次用户选择文件时,所选文件的列表都是从File数组中的对象构建f.files的.
到目前为止,这很好用,除了我无法检测到选中的重复文件.f.files仅包含文件名而不包含完整路径.
我URL.createObjectURL在File对象上应用但每次都是不同的URL,即使是相同的文件.
(在Chrome中,change如果连续选择了相同的文件,则上传控件不会触发事件.但这对我来说还不够,因为用户可以选择文件A,然后选择文件B,然后再次文件A.)
如何识别File对象中的重复文件?