java - 如何在数据库中上传照片以及如何在jsp页面中检索照片

标签 java jsp liferay

我提供了我的 service.xml 文件,其中包含表详细信息:

<entity name="Testimonial" local-service="true" remote-service="false">
    <!-- PK fields -->
    <column name="TestimonialId" type="long" primary="true" />

    <!-- UI fields -->
    <column name="subject" type="String" />
    <column name="area" type="String" />
    <column name="username" type="String" />
    <column name="email" type="String" />
    <column name="photo" type="String"/>
    <column name="company" type="String" />
    <column name="designation" type="String" />

    <!-- Audit fields -->
    <column name="createdAt" type="Date" />

这是我的java文件,我在其中编写了在数据库中存储数据的逻辑:

public void updateTesti(ActionRequest actionRequest,ActionResponse actionResponse) throws IOException, PortletException
{
    String subject = ParamUtil.getString(actionRequest,"subject");
    String area = ParamUtil.getString(actionRequest,"area");
    String username = ParamUtil.getString(actionRequest,"username");
    String email = ParamUtil.getString(actionRequest,"email");
    String company = ParamUtil.getString(actionRequest,"company");
    String designation = ParamUtil.getString(actionRequest,"designation");

    System.out.println("Your inputs ==> " + subject + ", " + area + "," 
    + username + "," + email + "," + company + "," + designation);

    Testimonial T1 = new TestimonialImpl();

    // set primary key
    long TestimonialId = 0L;
    try {
        TestimonialId =
        CounterLocalServiceUtil.increment(
        this.getClass().getName());
    } catch (SystemException e) {
        e.printStackTrace();
    }
    T1.setTestimonialId(TestimonialId);

    UploadPortletRequest uploadRequest = 

    PortalUtil.getUploadPortletRequest(actionRequest);
    String filePath = uploadRequest.getFileName("filePath");

    try{
        java.io.File file = uploadRequest.getFile("filePath");
        //Manage the Upload

    }catch (Exception e) {
        ///
    }
    // set UI fields
    T1.setSubject(subject);
    T1.setArea(area);
    T1.setUsername(username);
    T1.setEmail(email);
    T1.setCompany(company);
    T1.setDesignation(designation);
    T1.setPhoto(filePath);

    // set audit field(s)
    T1.setCreatedAt(new Date());

    // insert the book using persistence api
    try {
        TestimonialLocalServiceUtil.addTestimonial(T1);
    } catch (SystemException e) {
        e.printStackTrace();
    }
}

请告诉我哪里错了,缺少什么?

这是我的 JSP 代码:

<aui:form name="fm" method="POST" action="<%= updateTestiURL.toString() %>">
    <aui:input name="subject" label="Subject"/>
    <aui:input type="textarea" name="area" label="your Testimonial" />

    <aui:input name="username" label="Username"/>
    <aui:input name="email" label="Email"/>
    <aui:input type="file" label="upload your file"  name="filePath" />
    <aui:input name="company" label="Company"/>
    <aui:input name="designation" label="Designation"/>

    <aui:button type="submit" value="Save"/>

最佳答案

我认为存储图像的路径不是一个好主意。即使您从一台且唯一的计算机上传它们,并且您可以访问该路径并使用完整路径,但这可能不是您的情况。

由于您可以获得 java.io.File,因此您可以检索 InputStream,并使用 bytes[] 并将它们存储为文本/字符串或相当于 Blob 的内容。

您可以查看 Liferay 的 ImageLocalServiceImpl 类源代码,看看它如何使用这些资源

编辑:获取InputStream的提示

            InputStream str = (InputStream)uploadRequest.getFileAsStream("filePath", false);

关于java - 如何在数据库中上传照片以及如何在jsp页面中检索照片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16060659/

相关文章:

java - Spring 中的谷歌地图 JSP

java - 刷新页面浏览器服务代码一会儿

javascript - java.lang.RuntimeException : Requested enabled DevSupportManager, 但未找到或无法创建 DevSupportManagerImpl 类

java - 为什么 Java 中的大多数字符串操作都基于正则表达式?

java - 创建一个 JSON 对象

installation - 将 Liferay 安装为 Windows 2012R2 服务

jsf - 将omnifaces 1.4.1添加到liferay项目时出现Java.lang.ExceptionInInitializerError

java - 基于实体名称及其主键的通用数据获取 API

java - struts2 checkboxlist显示对齐的标签

java - jsp设置变量变量名