【发布时间】:2014-12-07 06:20:53
【问题描述】:
这是一个 Laravel 4 图像处理项目。 我正在兜圈子试图解决这个难题,我相信它有一个基本的解决方案。 用户选择一些图片,预览它们,然后点击上传。
问题在于,handleForm 的输出(FormData 对象)没有路由到 ImageController 以进行其余的图像处理。单击时没有任何反应。调试显示 FormData 对象(xhr.send(data) 中的数据)包含用户指定的图像。
相关位:1 用户点击上传。
<input type="button" value="Upload" id="go"/>
- 在jQuery中.click事件启动handleForm函数:
$("#go").on("click", handleForm);
- 在 handleForm 中,storedFiles 数组包含用户在预览后选择的图像。
function handleForm(e) {
e.preventDefault();
var data = new FormData();
for(var i=0, len=storedFiles.length; i<len; i++) {
data.append('files', storedFiles[i]);
}
var xhr = new XMLHttpRequest();
xhr.open('POST', 'upload', true);
xhr.onload = function(e) {
if(this.status == 200) {
console.log(e.currentTarget.responseText);
alert(e.currentTarget.responseText);
}
}
xhr.send(data);
}
- 在路线中
Route::post('upload', array(
'as' => 'upload',
'uses' => 'ImageController@upload'
));
- 在 ImageController 中:
<?php
class ImageController extends BaseController {
public function upload(){
$files = Input::all('files');
$gallery = str_random(12);
foreach ($files as $file) {
$validation = Image::validateImage(array('file'=> $file));
...................
这是我第一次尝试在 Laravel 中加入 jQuery,我需要一些帮助!
【问题讨论】:
-
我可以知道您的控制台的输出...我的意思是 AJAX 报告...
-
xhr.send(data);控制台.log(数据,“数据”);在 Chrome 控制台中生成 FormData“数据”