问题来了,如何获取文件名?
我不能使用receiveUpload(),因为从upload组件中删除此方法文件后?
问题是,一旦您使用upload组件启动上载,就只能通过调用interruptUpload()方法来中断它,并且以后任何时候都不能恢复。这种中断是永久性的。
这意味着您不能在上传过程中暂停查看系统中是否已经有该文件。你得一路上传文件。
考虑到这个缺点,你可以在系统中检查如果你有文件,在上传完成后。如果您拥有该文件,您可以显示一个确认对话框,在该对话框中您可以决定是保留该文件还是覆盖该文件。
public class RestrictingUpload extends Upload implements Upload.SucceededListener, Upload.Receiver {
private List<String> uploadedFilenames;
private ByteArrayOutputStream latestUploadedOutputStream;
public RestrictingUpload() {
setCaption("Upload");
setButtonCaption("Upload file");
addSucceededListener(this);
setReceiver(this);
uploadedFilenames = new ArrayList<String>();
}
@Override
public OutputStream receiveUpload(String filename, String mimeType) {
latestUploadedOutputStream = new ByteArrayOutputStream();
return latestUploadedOutputStream;
}
@Override
public void uploadSucceeded(SucceededEvent event) {
if (fileExistsInSystem(event.getFilename())) {
confirmOverwrite(event.getFilename());
} else {
uploadedFilenames.add(event.getFilename());
}
}
private void confirmOverwrite(final String filename) {
ConfirmDialog confirmDialog = new ConfirmDialog();
String message = String.format("The file %s already exists in the system. Overwrite?", filename);
confirmDialog.show(getUI(), "Overwrite?", message, "Overwrite", "Cancel", new ConfirmDialog.Listener() {
@Override
public void onClose(ConfirmDialog dialog) {
if (dialog.isConfirmed()) {
copyFileToSystem(filename);
}
}
});
}
private void copyFileToSystem(String filename) {
try {
IOUtils.write(latestUploadedOutputStream.toByteArray(), new FileOutputStream(filename));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e2) {
e2.printStackTrace();
}
}
private boolean fileExistsInSystem(String filename) {
return uploadedFilenames.contains(filename);
}
注意,我使用了2个外部库:
您可以从gist:https://gist.github.com/gabrielRuiu/9960772获取该类的代码片段,您可以将其粘贴到UI中并测试它。
问题内容: 我在这里尝试取消文件上传时遇到了一些情况。我所做的事情是说,如果用户单击“取消”按钮,则它将仅删除iframe,这样它就不会进入将文件上传到服务器并将数据插入数据库的页面。 现在,如果用户快速单击“取消”按钮,则可以正常工作,但我意识到的问题是,如果用户单击时间很晚,则有时无法及时删除iframe该文件刚刚在用户点击“取消”按钮之前上传。 因此,我的问题是,如果用户在单击“取消”按钮之
swoole提供了文件上传模块,可以自动处理来自HTTP POST的文件上传。在Controller中调用 $this->upload->save('Upfile_key'); //需要生成缩略图 $this->upload->thumb_width = 136; //缩略图宽度 $this->upload->thumb_height = 136; //缩略图高度 $this->upload->t
问题内容: 我意识到这个问题的变体已经出现了很多次,但是我找不到在这种情况下能回答这个问题的人。 我正在使用第三方fileuploader,该文件利用jQuery并在文件上传完成时给出成功回调。 我要实现的是一个带有文本字段的表单以及fileuploader,当您单击“提交”时,该表单将触发上传功能(文件开始使用进度条开始上传),并等待成功回调之前继续提交表格。 我必须立即承认我是jQuery的白
问题内容: 我仍在努力寻找解决方案。 我可以让用户使用文件输入来选择文件(甚至多个): 我可以使用捕获事件。但是一旦完成,如何使用发送文件? 问题答案: 这是带有注释的基本示例。该功能是您要寻找的:
我仍在努力想办法解决这个问题。 我可以让用户使用文件输入选择文件(甚至多个): 我可以使用
我正在尝试使用多部分实体方法上传文件。但它失败,错误说{“错误”:“文件参数值'无'无效”} 我的代码是: File File = new File(" C:/Users/SST-06/Desktop/new . txt "); 我的实体文件包含所有提到的参数。 -hkYO-pblk 0 uqlxjtvklrbkosxz 7 mye-8 wbvbvanx Content-Disposition:f