我已经为我的 laravel 应用程序创建了一个 HTML5 拖放文件上传,但是我在设置文件名时遇到了一些问题,因为我的所有控制器都可以使用该变量。
用户上传文件的过程,是填写一些会员信息,提交表单后,通过ajax加载了一个新的步骤,这一步是HTML5拖放文件上传。
问题不在于文件上传,该功能工作正常,我的问题是上传操作(如下),
public function action_upload()
{
$uploadDir = "public/uploads/";
$file = Input::get('value');
$name = Input::get('name');
//Get the mime
$getMime = explode(".", $name);
$mime = end($getMime);
//seperate the data out
$fileData = explode(',', $file);
//Encode it correctly
$encodedData = str_replace(' ', '+', $fileData[1]);
$decodedData = base64_decode($encodedData);
//create a random name, will help with not overwriting filesystems.
$this->randomName = substr_replace(sha1(microtime(true)), '', 12).'.'.$mime;
if(file_put_contents($uploadDir.$this->randomName, $decodedData)) {
echo $this->randomName.":uploaded successfully";
} else {
echo "Something went wrong. Check that the upload is not corrupted";
}
}
如您所见,我正在设置一个变量randomName
,在 ajax/HTML5 上传完成后,将调用以下代码,
public function action_source()
{
if(Input::get('step') == "step3") {
//echo $this->randomName;
return json_encode(array('next' => $this->data['url']."/project/launch", 'file' => $this->randomName));
}
return View::make('project.source', $this->data);
}
然而,在返回的 JSON 对象中,file
返回为NULL
,我不明白为什么,在我的课程开始时,public $randomName
我应该能够通过以下方式访问它,$this->randomName;
如果正确,函数调用的顺序,
动作上传()>动作来源()
为什么我无法访问$randomName
?