我有一個項目的文件,當我創建新項目我有表格創建與FormBuilder
,那裏我有一個字段從FileType
,它被轉換爲UploadedFile
,它工作正常。我想要的是能夠在文件之後上傳,而無需編輯項目。一個簡單的「添加更多文件」按鈕。不需要其他字段,因此 - 不需要FormBuilder
。另外我不想在單擊「添加更多文件」後有「保存」按鈕。我想單擊它選擇我的文件,當我點擊「打開」表單被提交。這個我用下面的代碼Symfony3上傳文件不使用FormBuilder
<form action="{{ path('image_upload', { 'id': project.id }) }}" method="post" name="form">
<div class="col-md-2" id="imageUpload">
<span>Add More Files</span>
<input type="file" readonly="readonly" id="imageUpload" name="image_upload[]" onchange="form.submit()" multiple/><div class="upload_icon"></div>
</div>
</form>
實現正如你可以看到這種形式僅僅是這一個按鈕,這onChange
提交它。我的問題是,在提交後,文件不是UploadedFile
類型,我用於上傳圖片的服務不起作用。我試圖自己創建一個UploadedFile
的實例,但它需要filePath
,我不知道如何去做。
從這個我不知道怎麼把文件路徑實際上將它添加到UploadedFile
構造。另外,當我調試項目創建期間(我使用FileType
時)發生的情況時,我發現filePath是「C:\ xampp \ tmp」,我不知道它來自哪裏。我首先想到的是簡單地將其與此代碼
$file = new UploadedFile("C:\\xampp\\tmp",$file);
增加的UploadedFile
構造當我運行它,我收到此錯誤 -
文件「C:\ XAMPP \ tmp目錄」不存在
因此,要回顧一下 - 這是$文件 - >的getPath()給了我當我使用FileType
,但是沒有它,當我有簡單的上傳按鈕,它不列入存在的路徑。
在這一點上我投降了,就像「好吧......如果它要我使用FormBuilder那麼糟糕 - 那麼我會」。這裏是AddFileType代碼(這是關係到沒有實體或任何東西)
$builder->
add("addFiles",FileType::class,array(
'label'=>'Add More Files',
'multiple'=> true,
'mapped'=> false,
"required"=>false
));
這裏是另一個問題 - 我希望能夠提交表單沒有提交按鈕。簡單地當我點擊「添加更多文件」,並選擇一些文件的形式爲我submited。
我的問題 - 有沒有辦法在使用簡單的上傳按鈕時獲取filePath,因此創建一個UploadedFile
的實例並將其從我的服務發送到我的數據庫。如果沒有 - 有沒有一種方法FormBuilder
使它如此當FileType按鈕被點擊提交表單沒有任何提交按鈕需要。
可以使用VichUploaderBundle之間的關係。這很容易,簡單和有用。 文檔在這裏 https://github.com/dustin10/VichUploaderBundle/blob/master/Resources/doc/index.md – Ld91