- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
从 Laravel 5.2.15 开始,$test 参数被移除,但是没有明确的原因,因为 Symfony 的 UploadedFile 仍然有 $test 参数。
解决方法是暂时使用 Laravel 5.2.14。
Laravel 自己的 UploadedFile 没有传递 $test 参数。请参阅这些资源:
我知道,还有一个问题:How to test file upload in Laravel 5.2 ,但标记的答案对我不起作用。
我创建了 Symfony 的 UploadedFile 类的实例,并将 $test
设置为 true
。我将文件发布到 file/upload
。
class FileControllerTest extends TestCase
{
use \Illuminate\Foundation\Testing\DatabaseTransactions;
private $file;
public function setUp()
{
parent::setUp();
$this->file = new Symfony\Component\HttpFoundation\File\UploadedFile(
public_path() . '/examples/example.jpg',
'example.jpg',
'image/jpeg',
filesize(public_path() . '/examples/example.jpg'),
null,
true // for $test
);
}
/** @test */
public function it_uploads_a_valid_file()
{
var_dump($this->file); // $test = true
$this->call('POST', 'file/upload', [], [], ['file' => $this->file],
['accept' => 'application/json']);
$this->assertResponseOk();
}
}
namespace App\Http\Controllers;
class FileController extends Controller
{
public function upload(Request $request)
{
var_dump($request->file('file')); // $test = false
return [];
}
}
$test
参数为 true
upload()
$request->file('file')
包含正确的参数,但是
$test是假
看来参数 $test 没有被 post 调用过去。这是一个错误吗?
最佳答案
这真是一件有趣的事情。在创建这篇文章时,您已经注意到了很多(如果有人有问题,请仔细阅读)。
在此commit正如您已经提到的 $testing
参数已删除,并且类的代码已简化,删除了 Reflection 以获取 Symfony\Component\HttpFoundation\File\UploadedFile< 的
.testing
属性值
现在棘手的事情是,根据您正在测试的内容,您可能不会注意到更改,并且一切可能会正常工作,但在某些情况下却不会,您也不会真正知道原因。
例如,一切都可能正常 - 文件上传不会有问题,但如果您将 mimes
规则添加到 Request 类中,如下所示:
'logo' => ['mimes:jpeg,png'],
它不会告诉您文件具有无效的 mime(这是因为在内部它也会验证文件是否确实上传,并且在测试时实际上它与真实上传不一样)。
解决方案是再次查看提交中真正更改的内容以及该方法的外观。在 this file上传文件的实例返回如下:
return $file instanceof static ? $file : new static(
$file->getRealPath(), $file->getClientOriginalName(), $file->getClientMimeType(),
$file->getClientSize(), $file->getError()
);
因此,如果文件是此类的实例,它将返回未修改的实例,否则它将创建 now 对象,而不将 $testing
参数传递给类构造函数。
因此,要解决此问题,在测试文件上传时,您不应使用
\Symfony\Component\HttpFoundation\File\UploadedFile
下课了。您现在应该使用
\Illuminate\Http\UploadedFile
在测试文件上传时不会出现任何奇怪的问题(当然,您仍然应该将 true
作为 $testing
参数传递给此对象构造函数,但现在它将是稍后使用没有问题)
关于拉拉维尔 5.2 |测试 UploadedFile 在发布后缺少 $test 值。漏洞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36857800/
我目前正在开发一个应用程序,用户可以选择浏览和上传 Excel 文件,但我很难获取正在浏览的文件的绝对路径。因为位置可以是任何东西(Windows/Linux)。 import org.apache.
在 Ubuntu 服务器上部署我的 Laravel 代码后,我有以下函数返回空字符串: $package = $request->file('file'); dd($package->getPathn
这个问题在这里已经有了答案: How to use PrimeFaces p:fileUpload? Listener method is never invoked or UploadedFile
我阅读了以下 django 文档 UploadedFile.content_type The content-type header uploaded with thefile (e.g. text/
我正在寻找一个 javascript/jquery(无论哪种方式)来收集我上传的所有文件。 我有以下代码,其中 .afbeelding 是几个文件输入字段的类 var geuploadeAfbeeld
我有一个 Laravel 4.2 API,它在创建资源时接受文件上传。该文件检索与Input::file('文件') 现在我想编写一个脚本(也在 Laravel 中)来批量创建一些资源(所以我不能使用
我正在尝试从现有文件创建一个 UploadedFile。但它没有成功上传,也没有显示任何错误。 这是我的代码 $encoded_data = "This is a huge string";
我正在使用 上传文件(图片)在代码隐藏中我使用 UploadedFile.SaveAs("C://Path...")将图像保存在服务器上。 这是我的完整代码: protected void btnA
当我的表单被发送时 UploadedFile::getInstance($model, 'images') 返回 null。我还尝试了 UploadedFile::getInstanceByName(
我在 symfony2 中使用 UploadedFile 类来上传图像文件。我允许使用 mime 类型 image/jpg 和 image/png 的图像。当我将 png 文件从我的系统上传到服务器时
我正在使用 PrimeFaces 3.2,我应该在文件系统上存储一个文件。 现在,我知道 FileUploaded 类创建了一个临时文件,因此我可以使用 java.io.File 将其转换为真实文件。
我有以下函数定义: public function save(UploadedFile $file, string $fileSystemName) { $fs = $this->fileSy
我正在构建文件上传没有 Doctrine 并且没有通过我可用的注释或 YAML 进行验证。 Symfony 将上传的文件呈现为 Symfony\Component\HttpFoundation\Fil
我正在构建文件上传没有 Doctrine 并且没有通过我可用的注释或 YAML 进行验证。 Symfony 将上传的文件呈现为 Symfony\Component\HttpFoundation\Fil
我有一个包含 CSV 数据的巨大字符串。我想将其转换为 Excel 文件 (.xslx) 并将其另存为 UploadedFile/SimpleUploadedFile。我尽可能地用谷歌搜索并得出以下结
我正在学习本教程 http://symfony.com/doc/current/controller/upload_file.html但是 $file 没有被转换为 UploadedFile,它仍然是
PrimeFaces UploadedFile 仅公开 InputStream,不公开文件本身。处理流后如何删除它? 最佳答案 为此,PrimeFaces 在幕后使用 Apache Commons F
我尝试发送附件文件,但我得到 Cannot use object of type Illuminate\Http\UploadedFile as array 我使用 Laravel 5.4 有人知道我
有没有办法将字符串转换成ActionDispatch::Http::UploadedFile 我需要它能够在 API 请求中传递文件路径以处理将 excel 插入数据库,因为我想使用 rest API
我使用了与importing csv and excel Railscast类似的想法,但是由于该情节中的标准代码需要一些时间来处理(使用ActiveRecord为文件中的每一行创建新记录),我在He
我是一名优秀的程序员,十分优秀!