我正在构建一个上传要修改的文件的项目。我想在上传完成后重定向到其他页面。即使我看到响应(我要去的页面html),重定向也无法正常工作。以下是上传完成后所发生情况的示例:
以下是我在JavaScript中的上传代码:
mRecylerview.getViewTreeObserver().addOnScrollChangedListener(
new ViewTreeObserver.OnScrollChangedListener() {
@Override public void onScrollChanged() {
int x = toolbar.getScrollX();
int y = toolbar.getScrollY();
}
});
保存上传文件的函数(包含重定向响应),它存在于“UploadsController”控制器中:
$('#fileupload').fileupload({
dataType: 'json',
maxChunkSize: 10000000,
maxFileSize: 1000000 * 10000,
done: function (e, data) {
console.log("success");
$('#spin').css('display','none');
},
progress:function (e, data) {
var progress = parseInt(data.loaded / data.total * 100, 10);
$('#prog').html(progress+"%");
$('#prog').width(''+progress+'%');
if(progress == 100){
$("#prog").html('Completed');
$('#spin').css('display','block');
}
console.log(progress);
}
});
我的路线:
protected function saveFile(UploadedFile $file)
{
$fileName = $file->getClientOriginalName();
$finalPath = storage_path() . '/app/upload/';
$file->move($finalPath, $fileName);//save uploaded file
if (strcmp($file->getClientOriginalExtension(), "zip") == 0) { // if it is a zip file
return redirect('download'); // redirect
} else { // if it is not a zip file
Storage::delete('/upload/' . $fileName);
return response()->json([
'status' => 'Zfalse'
]);
}
}
答案 0 :(得分:0)
您需要在前端使用Javascript重定向,因为它是一个ajax请求。您的ajax请求被正确地重定向,但没关系,因为返回的重定向内容只存储在回调内的变量中。
在您的控制器中:
return response()->json([
'redirect' => url('to/where/you/want/to/go')
]);
在你的javascript:
done: function() {
...
if (data.redirect) {
// here you actually redirect to the new page
window.location = data.redirect;
}
...
}