I have a file stored in this.form.imagesFile
variable. It contains file below:
我想使用发送它FormData
and AJAX
。仅供参考:我正在使用 Vue 和 Laravel。
let getImg = [];
this.form.variantsProd.forEach((item) => {
let totalImagesFile = $('.images' + item.id)[0].files.length; //Total Images
let imagesFile = $('.images' + item.id)[0];
for (let i = 0; i < totalImagesFile; i++) {
getImg.push(imagesFile.files[i]);
}
this.form.imagesFile = getImg;
});
this.form.totalImagesFile = getImg.length;
let formData = new FormData();
formData.append('imagesFile', this.form.imagesFile);
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content'),
},
});
const token = localStorage.getItem('token-staff');
var self = this;
$.ajax({
url: `${BASE_URL}/api/staff/products/store`,
method: 'post',
data: formData,
enctype: 'multipart/form-data',
cache: false,
contentType: false,
processData: false,
dataType: 'JSON',
async: true,
headers: {
'Content-Type': undefined,
},
xhr: function () {
let myXhr = $.ajaxSettings.xhr();
return myXhr;
},
beforeSend: function (xhr) {
xhr.setRequestHeader('Authorization', `Bearer ${token}`);
},
error: function (response) {
console.log(response);
},
success: function (result) {
if (result.errors) {
console.log(result);
} else {
//
} //endif
},
});
但是当我尝试在控制器中获取文件时,我得到了[object File]
。所以,我愿意gettype($imagesFile)
结果是string
。这显然是一个意想不到的结果。我想将文件存储在服务器中。我怎样才能做到这一点?
public function store(Request $request)
{
$imagesFile = $this->request->get('imagesFile');
return response()->json([
'success' => true,
'message' => $imagesFile,
]);
}