[英]How to create a directory using File.getParentFile().getName() with relative path
[英]How to upload file in relative directory
我已經創建了一個應用程序,可以在其中上傳將保存在本地給定目錄中的任何文件。 我想修改它,我想為部門添加一個下拉列表(具有多個選項,例如,樓層,商店,區域)。 即,如果我們要上傳“存儲”文件夾中的文件,則可以選擇“存儲”選項,文件將上傳到“存儲”文件夾中。 “地板”和“部分”相同。 我只需要任何示例鏈接即可。 我已經在liferay中做到了。
import org.apache.commons.io.FileUtils;
import com.liferay.portal.kernel.upload.UploadPortletRequest;
import com.liferay.portal.util.PortalUtil;
import com.liferay.util.bridges.mvc.MVCPortlet;
public class UploadDirectory extends MVCPortlet {
private final static int ONE_GB = 1073741824;
private final static String baseDir = "/home/xxcompny/workspace";
private final static String fileInputName = "fileupload";
public void upload(ActionRequest request, ActionResponse response)
throws Exception {
UploadPortletRequest uploadRequest = PortalUtil.getUploadPortletRequest(request);
long sizeInBytes = uploadRequest.getSize(fileInputName);
if (uploadRequest.getSize(fileInputName) == 0) {
throw new Exception("Received file is 0 bytes!");
}
File uploadedFile = uploadRequest.getFile(fileInputName);
String sourceFileName = uploadRequest.getFileName(fileInputName);
File folder = new File(baseDir);
if (folder.getUsableSpace() < ONE_GB) {
throw new Exception("Out of disk space!");
}
File filePath = new File(folder.getAbsolutePath() + File.separator + sourceFileName);
FileUtils.copyFile(uploadedFile, filePath);
}
}
JSP在這里
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<%@ taglib uri="http://liferay.com/tld/aui" prefix="aui"%>
<%@ taglib uri="http://liferay.com/tld/ui" prefix="liferay-ui"%>
<portlet:defineObjects />
<portlet:actionURL name="upload" var="uploadFileURL"></portlet:actionURL>
<aui:form action="<%= uploadFileURL %>" enctype="multipart/form-data" method="post">
<select name="folder">
<option value="store">Store</option>
<option value="floor">Floor</option>
<option value="department">Department</option>
</select>
<aui:input type="file" name="fileupload" />
<aui:button name="Save" value="Save" type="submit" />
</aui:form>
我希望文件將上傳到所屬文件夾中。
您可以使用以下代碼
String user_selected_option=request.getParameter("userSel")
realPath = getServletContext().getRealPath("/files");
destinationDir = new File(realPath+"/"+user_selected_option);
// save to destinationDir
我有類似的任務將文件上傳到指定的文件夾,因此以下是根據您的要求進行了一些修改的代碼:
public void upload(ActionRequest request, ActionResponse response)
throws Exception {
UploadPortletRequest uploadRequest = PortalUtil.getUploadPortletRequest(request);
long sizeInBytes = uploadRequest.getSize(fileInputName);
if (sizeInBytes == 0) {
throw new Exception("Received file is 0 bytes!");
}
File uploadedFile = uploadRequest.getFile(fileInputName);
String sourceFileName = uploadRequest.getFileName(fileInputName);
/* selected folder from UI */
String paramFolder = uploadRequest.getParameter("folder");
byte[] bytes = FileUtil.getBytes(uploadedFile);
if (bytes != null && bytes.length > 0) {
try {
/* Create folder if doesn't exist */
File folder = new File(baseDir + File.separator + paramFolder);
if (!folder.exists()) {
folder.mkdir();
}
/* Write file to specified location */
File newFile = new File(folder.getAbsolutePath() + File.separator + sourceFileName);
FileOutputStream fileOutputStream = new FileOutputStream(newFile);
fileOutputStream.write(bytes, 0, bytes.length);
fileOutputStream.close();
newFile = null;
} catch (FileNotFoundException fnf) {
newFile = null;
/* log exception */
} catch (IOException io) {
newFile = null;
/* log exception */
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.