File upload 播放框架CRUD文件上载
有人知道如何将文件上传添加到Play的CRUD表单中吗?到目前为止,我有这样一个视图部分:File upload 播放框架CRUD文件上载,file-upload,playframework,crud,File Upload,Playframework,Crud,有人知道如何将文件上传添加到Play的CRUD表单中吗?到目前为止,我有这样一个视图部分: #{form action:@save(object._key()), enctype:'multipart/form-data'} #{crud.form} #{crud.custom 'file'} <label for="uploadFile"> File </label&
#{form action:@save(object._key()), enctype:'multipart/form-data'}
#{crud.form}
#{crud.custom 'file'}
<label for="uploadFile">
File
</label>
<input type="file" id="uploadFile" name="uploadFile" />
#{/crud.custom}
#{/crud.form}
<p class="crudButtons">
<input type="submit" name="_save" value="&{'crud.save', type.modelName}" />
<input type="submit" name="_saveAndContinue" value="&{'crud.saveAndContinue', type.modelName}" />
</p>
#{/form}
{form action:@save(object.\u key()),enctype:'multipart/form data'}
#{crud.form}
#{crud.custom“文件”}
文件
#{/crud.custom}
#{/crud.form}
#{/form}
但是我不知道如何编写控制器方法来处理上传。
我不想将文件作为blob存储在db中,我不想将其存储在文件系统中 此代码将您的文件保存到项目的“数据/附件”目录中: 模型 模板 如上所述,您只需通过自己的字段来补充crud表单,并覆盖crud方法“create”。更新记录也可以这样做。 您可以更改application.conf中的“数据/附件”目录: application.conf
有关更多详细信息,请参见“令人困惑的是,play.db.jpa.Blob数据存储在数据库之外的文件中,并且不使用java.sql.Blob类型和数据库中的Blob。”文章中的这句话确实为我澄清了这一点。他是对的,他们把它命名为Blob,确实让人很困惑。
package models;
import play.db.jpa.Blob;
import play.db.jpa.Model;
import javax.persistence.Entity;
@Entity
public class MyApp extends Model {
public String name;
public Blob file;
}
#{form action:@create(), enctype:'multipart/form-data'}
#{crud.form /}
<label for="uploadFile">File</label>
<input type="file" id="uploadFile" name="myapp.file" />
<p class="crudButtons">
<input type="submit" name="_save"
value="&{'crud.save', type.modelName}" />
<input type="submit" name="_saveAndContinue"
value="&{'crud.saveAndContinue', type.modelName}" />
</p>
#{/form}
package controllers
import play.*;
import play.mvc.*;
import java.util.*;
import models.*;
/* Custom controller that extends
* controller from CRUD module.
*/
public class MyController extends CRUD {
// ...
// Will save your object
public static void create(MyApp object) {
/* Get the current type of controller and test it on non-empty */
ObjectType type = ObjectType.get(getControllerClass());
notFoundIfNull(type);
/* We perform validation of the generated crud module form fields */
validation.valid(object);
if (validation.hasErrors()) {
renderArgs.put("error", Messages.get("crud.hasErrors"));
try {
render(request.controller.replace(".", "/") + "/blank.html", type, object);
} catch (TemplateNotFoundException e) {
render("CRUD/blank.html", type, object);
}
}
/* Save our object into db */
object._save();
/* Show messages */
flash.success(Messages.get("crud.created", type.modelName));
if (params.get("_save") != null) {
redirect(request.controller + ".list");
}
if (params.get("_saveAndAddAnother") != null) {
redirect(request.controller + ".blank");
}
}
# ...
# Store path for Blob content
attachments.path=data/attachments
# ...