こんにちは、私は従業員ディレクトリを作成しています。そのフォームで従業員の写真をアップロードしたいのですが、画像を保存しようとすると 、画像アップロードのロジックを削除してからデータベース内の他のデータストアを正常に削除すると、ポートレットが一時的に利用できないなどのエラーが発生しました。画像パスをデータベースに保存する方法を教えてください。/webappsにimages フォルダーを作成しました。すべての画像をこのフォルダーに保存し、画像パスをデータベースに保存したいと考えています。画像パスを保存する方法と、画像パスを保存した後に他のページに画像を表示する方法を教えてください。
ここで、ロジックを記述した Java コードを提供します。パッケージcom.dir;
import java.io.File;
import java.io.IOException;
import java.util.Date;
import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.PortletException;
import com.liferay.portal.kernel.exception.SystemException;
import com.dir.model.directory;
import com.dir.model.impl.directoryImpl;
import com.dir.service.directoryLocalServiceUtil;
import com.liferay.counter.service.CounterLocalServiceUtil;
import com.liferay.portal.kernel.upload.UploadPortletRequest;
import com.liferay.portal.kernel.util.FileUtil;
import com.liferay.portal.kernel.util.ParamUtil;
import com.liferay.portal.util.PortalUtil;
import com.liferay.util.bridges.mvc.MVCPortlet;
public class Directory extends MVCPortlet {
public void updatedir(ActionRequest actionRequest,ActionResponse
actionResponse)throws IOException, PortletException
{
String empname =ParamUtil.getString(actionRequest,"empname");
String designation =ParamUtil.getString(actionRequest,"designation");
String qualification =ParamUtil.getString(actionRequest,"qualification");
String email =ParamUtil.getString(actionRequest,"email");
String photo=ParamUtil.getString(actionRequest,"photo");
String company =ParamUtil.getString(actionRequest,"company");
int experiance=ParamUtil.getInteger(actionRequest,"experiance");
directory d1 = new directoryImpl();
// set primary key
long directoryId=0L;
try
{
directoryId=CounterLocalServiceUtil.increment(this.getClass().getName());
}
catch (SystemException ex)
{
ex.printStackTrace();
}
d1.setDirectoryId(directoryId);
// set UI fields
d1.setEmpname(empname);
d1.setDesignation(designation);
d1.setQualification(qualification);
d1.setEmail(email);
d1.setPhoto(photo);
d1.setCompany(company);
d1.setExperiance(experiance);
File file;
UploadPortletRequestupreq=PortalUtil.getUploadPortletRequest(actionRequest);
file=upreq.getFile(photo);
Stringpath=actionRequest.getPortletSession().getPortletContext().getRealPath(photo)
+ "//" + ("/images");
File fileone= new File(path);
FileUtil.copyDirectory(file,fileone);
// set audit field(s)
d1.setDateAdded(new Date());
// insert the book using persistence api
try {
directoryLocalServiceUtil.adddirectory(d1);
} catch (SystemException e) {
e.printStackTrace();
}
}
}
ここで、写真をアップロードした場所からJspファイルを提供しています。
<aui:form name="fm" method="POST" action="<%= updatedirURL.toString() %>"
enctype="multipart/form-data">
<aui:input name="empname" label="Name"/>
<aui:input name="designation" label="Designation"/>
<aui:input name="qualification" label="Qualification"/>
<aui:input name="email" label="Email"/>
<aui:input type="file" label="Photo" name="photo"/>
<aui:input name="company" label="Company"/>
<aui:input name="experiance" label="Experiance"/>
<aui:button type="submit" value="Save"/>
</aui:form>
私が間違っているところと、必要なものが欠けているところを親切に助けてください。また、そのフォルダのデータを表示する方法も教えてください。