我在eclipse中开发模式。 fileupload工作得很好。但我会在linux上创建目录 /var/wms/year/month/file.jpg 。这是我的客户端源代码: 添加组件到表单
fileUpload = new SingleUploader(FileInputType.LABEL);
fileUpload.setFileInputPrefix("PJ");
fileUpload.addOnFinishUploadHandler(onFinishUploaderHandler);
layoutContainerItemRight.add(fileUpload, formData);
方法是addOnFinishUploadHandler
private IUploader.OnFinishUploaderHandler onFinishUploaderHandler = new IUploader.OnFinishUploaderHandler() {
public void onFinish(IUploader uploader) {
if (uploader.getStatus() == gwtupload.client.IUploadStatus.Status.SUBMITING) {
String month = VisionProperties.getBulan();
String year = DateTimeFormat.getFormat( "d-M-yyyy" ).format( new Date() ).split( "-")[2];
String strDirectoy = "/var/wms/" + year + "/" + month + "/";
File file = new File(strDirectoy);
if (!file.exists()) {
file.mkdirs();
}
}
if (uploader.getStatus() == gwtupload.client.IUploadStatus.Status.SUCCESS) {
String msg = uploader.getServerInfo().message;
fileName = msg.toString();
if(selectWindow != 2){
img.setUrl("servlet.gupld?show=&fieldname=" + fileName);
itemPanel.render(img.getElement());
}else{
tb.setVisible(true);
tb.setText("Download File "+uploader.getFileName());
}
}
}
};
上传文件进程时如何制作目录文件?
答案 0 :(得分:1)
您正试图在客户端使用java.io.File
,但GWT jre emulation中的包集不支持。
如果您想在客户端执行此操作,则必须使用旧浏览器不支持的javascript File Api,并且未在gwt-core中实现。使用elemental你只能使用Api和Chrome,但我并不积极。所以最好通过jsni包装它,它计划在gwtupload中,但还没有时间表。请注意,使用js File Api,您无权访问您的真实文件系统,而是浏览器中的虚拟文件系统。要在本地文件系统中保存创建的文件,您必须使用iframe下载它,以便它向用户询问保存位置。
否则,如果您想在服务器端执行此操作,请在扩展executeAction
时覆盖servlet中的UploadAction
。
答案 1 :(得分:0)
您无法在客户端执行此操作。您可以通过以下方式在服务器端执行此操作
HTML5 FILE API仅限于现代浏览器中的只读行为。
参考 - 1. Basic File upload in GWT 2. How to retrieve file from GWT FileUpload component?