我在Appfog上使用Laravel上传大文件时遇到问题,上传到Amazon S3。
对于1kb到1.5Mb之间的文件,它工作得很好。 但任何更大的,它都会失败。
出现这种情况的原因是,服务器显然是在实际上传文件并在服务器上的内存之前触发S3上传代码。
因为错误消息是S3 Laravel Bundle返回的未处理异常...
话说....
S3::inputFile(): Unable to open input file:
当我通过wamp使用相同的文件在本地上传/运行此功能时,它可以正常工作。并完美地进入S3。
只有当文件越过我的appfog应用程序时,它才会中断。因为本地上传需要20毫秒,而通过网络上传大约需要4秒。
这告诉我,它显然在文件到达之前触发了代码或者沿着那些行发布了代码。
而且,当文件很小时,它完全可以通过我的应用程序完成。只有当它们稍微大一点时才会中断。
任何想法???
public function action_uploadfile(){
$input = Input::all();
if(!empty($input['theDoc']['name'])){
$file = Input::file('theDoc');
$s = Setting::shortcode();
$id = $input['theID']."-".$input['leadID'];
$path_parts = pathinfo($file['name']);
$ext = $path_parts['extension'];
if(!empty($input['theName'])){
$filename = $input['theName'].".".$ext;
} else {
$filename = $file['name'];
}
if((!empty($file))&&(S3::inputFile($file['tmp_name'], false))){
if(S3::putObject($input2, 'myAMAZONBucket', $s."/".$id."/".$filename, S3::ACL_PUBLIC_READ)){
$file2 = Doc::where('uri','=', $s."/".$id."/".$filename)->get();
if($file2){
// duplicate file/document error goes here
} else {
$f = New Doc;
$f->lead_id = $input['leadID'];
$f->sale_id = $input['theID'];
$f->user_id = Auth::user()->id;
$f->notes = $input['theNotes'];
$f->filetype = $ext;
$f->filesize = $file['size'];
$f->filename = $filename;
$f->uri = $s."/".$id."/".$filename;
if($f->save()){
return Redirect::back();
};
}
} else {
//Cannot read file error
}
} else {
//Failed upload error
}
} else {
//No file selected error
}
}
答案 0 :(得分:0)
尝试使用一些ini_set()来播放max_execution_time和set_time_limit之类的内容,看看其中一个是否设置得太低。