如何 post 将整个对象隐藏在 php 中的表单中
how to post an entire object hidden in a form in php
我有一个原始文件对象,我想以 post 形式发送该对象。
当我尝试这个时:
{{ Form::open(array('url' => 'mgmtUser/upload_img_crop/', 'method' => 'POST', 'files' => true)); }}
<input hidden type="file" name="file" value="<?php $file; ?>">
<?= Form::hidden('x', '', array('id' => 'x')) ?>
<?= Form::hidden('y', '', array('id' => 'y')) ?>
<?= Form::hidden('w', '', array('id' => 'w')) ?>
<?= Form::hidden('h', '', array('id' => 'h')) ?>
<?= Form::submit('Crop it!') ?>
<?= Form::close() ?>
post 结果仅为:
["file"]=> 空值
为什么以及如何获得所有对象,我应该编码、序列化...?
我在 laravel 4。
$文件是:
object(Symfony\Component\HttpFoundation\File\UploadedFile)#9 (7) {
["test":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
bool(false)
["originalName":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
string(11) "3bb13ad.jpg"
["mimeType":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
string(10) "image/jpeg"
["size":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
int(8017)
["error":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
int(0) ["pathName":"SplFileInfo":private]=> string(14)
"/tmp/phpVGS9Cu" ["fileName":"SplFileInfo":private]=> string(9)
"phpVGS9Cu" }
如果您实际上是想通过表单发送 $file
Object,您需要将其序列化为某种文件格式(例如写入 .txt
文件)然后通过输入上传。
看起来 $file
对象包含与您可能尝试上传的文件相关的属性,而不是实际的 PHP 文件句柄对象。如果是这种情况,您应该只更改下面的行
<input hidden type="file" name="file" value="<?php $file; ?>">
成为
<input hidden type="file" name="file" value="<?php $file.originalName; ?>">
编辑
如果您需要在表单提交后处理文件句柄,试试这个:
<input hidden type="file" name="file" value="<?php echo json_encode($file) ?>">
然后当你在接收端时,使用
$file = json_decode($_POST['file']);
访问对象。
我有一个原始文件对象,我想以 post 形式发送该对象。
当我尝试这个时:
{{ Form::open(array('url' => 'mgmtUser/upload_img_crop/', 'method' => 'POST', 'files' => true)); }}
<input hidden type="file" name="file" value="<?php $file; ?>">
<?= Form::hidden('x', '', array('id' => 'x')) ?>
<?= Form::hidden('y', '', array('id' => 'y')) ?>
<?= Form::hidden('w', '', array('id' => 'w')) ?>
<?= Form::hidden('h', '', array('id' => 'h')) ?>
<?= Form::submit('Crop it!') ?>
<?= Form::close() ?>
post 结果仅为: ["file"]=> 空值
为什么以及如何获得所有对象,我应该编码、序列化...? 我在 laravel 4。 $文件是:
object(Symfony\Component\HttpFoundation\File\UploadedFile)#9 (7) { ["test":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=> bool(false) ["originalName":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=> string(11) "3bb13ad.jpg" ["mimeType":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=> string(10) "image/jpeg" ["size":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=> int(8017) ["error":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=> int(0) ["pathName":"SplFileInfo":private]=> string(14) "/tmp/phpVGS9Cu" ["fileName":"SplFileInfo":private]=> string(9) "phpVGS9Cu" }
如果您实际上是想通过表单发送 $file
Object,您需要将其序列化为某种文件格式(例如写入 .txt
文件)然后通过输入上传。
看起来 $file
对象包含与您可能尝试上传的文件相关的属性,而不是实际的 PHP 文件句柄对象。如果是这种情况,您应该只更改下面的行
<input hidden type="file" name="file" value="<?php $file; ?>">
成为
<input hidden type="file" name="file" value="<?php $file.originalName; ?>">
编辑
如果您需要在表单提交后处理文件句柄,试试这个:
<input hidden type="file" name="file" value="<?php echo json_encode($file) ?>">
然后当你在接收端时,使用
$file = json_decode($_POST['file']);
访问对象。