如何在spring surf java webscript中将文件上载到本地文件夹?
我正在上传一个文件。我想获取文件并保存到本地系统。为此,我使用java中的spring surf webscripts。谁能告诉我怎样才能得到我的文件吗 这是我的ftl文件:如何在spring surf java webscript中将文件上载到本地文件夹?,java,alfresco,surf,alfresco-share,spring-surf,Java,Alfresco,Surf,Alfresco Share,Spring Surf,我正在上传一个文件。我想获取文件并保存到本地系统。为此,我使用java中的spring surf webscripts。谁能告诉我怎样才能得到我的文件吗 这是我的ftl文件: <form name="frmUpload" id="frmUpload"action="${url.context}/upload" enctype="multipart/form-data" method="get"> <input type="file" size="40" id="toBe
<form name="frmUpload" id="frmUpload"action="${url.context}/upload" enctype="multipart/form-data" method="get">
<input type="file" size="40" id="toBeUploaded" name="toBeUploaded" tabindex="2" onchange = "document.getElementById('frmUpload').submit()"required />
</form>
文件名正在正确提交,但正在抛出FileNotFoundException。这是stacktrace
java.io.FileNotFoundException: Source 'test.jar' does not exist
at org.apache.commons.io.FileUtils.copyFile(FileUtils.java:637)
at org.apache.commons.io.FileUtils.copyFile(FileUtils.java:607)
要获取上传的表单,您需要通过对象。您的代码将类似于:
// Get our multipart form
final ResourceBundle rb = getResources();
final FormData form = (FormData)req.parseContent();
if (form == null || !form.getIsMultiPart())
{
throw new ResourceBundleWebScriptException(Status.STATUS_BAD_REQUEST, rb, ERROR_BAD_FORM);
}
// Find the File Upload file, and process the contents
boolean processed = false;
for (FormData.FormField field : form.getFields())
{
if (field.getIsFile())
{
// Logic to process/save the file data here
processUpload(
field.getInputStream(),
field.getFilename());
processed = true;
break;
}
}
// Object if we didn't get a file
if (!processed)
{
throw new ResourceBundleWebScriptException(Status.STATUS_BAD_REQUEST, rb, ERROR_NO_FILE);
}
如果您确定上传的字段名,您可以短路其中的一些逻辑位来获取上传的表单,您需要通过对象。您的代码将类似于:
// Get our multipart form
final ResourceBundle rb = getResources();
final FormData form = (FormData)req.parseContent();
if (form == null || !form.getIsMultiPart())
{
throw new ResourceBundleWebScriptException(Status.STATUS_BAD_REQUEST, rb, ERROR_BAD_FORM);
}
// Find the File Upload file, and process the contents
boolean processed = false;
for (FormData.FormField field : form.getFields())
{
if (field.getIsFile())
{
// Logic to process/save the file data here
processUpload(
field.getInputStream(),
field.getFilename());
processed = true;
break;
}
}
// Object if we didn't get a file
if (!processed)
{
throw new ResourceBundleWebScriptException(Status.STATUS_BAD_REQUEST, rb, ERROR_NO_FILE);
}
如果您确定上传的字段名,您可以将其中一些逻辑位短路,谢谢gagravarr。你能告诉我这个processUpload方法是什么吗?form.getIsMultiPart()是假的。我已经在表单中声明了enctype=“multipart/form data”。我已经在配置文件中将这个webscript配置为bean。对于多部分表单,bean定义是否需要更多的配置,如属性等?
processUpload
是处理文件的逻辑所在!您只需发送带有结构的表单,使用firebird或wireshark之类的工具检查您发送的内容是否正确,好吧,但我无法获取我的文件。我搜索了很多。有人说这是java中冲浪脚本中的一个bug。请你能帮我吗?Alfresco至少有一些这样做的例子,这就是我答案中的代码主要取自的地方!我只能建议您尝试将代码和webscript与AlfrescoThanks gagravarr中的工作代码和webscript进行比较。你能告诉我这个processUpload方法是什么吗?form.getIsMultiPart()是假的。我已经在表单中声明了enctype=“multipart/form data”。我已经在配置文件中将这个webscript配置为bean。对于多部分表单,bean定义是否需要更多的配置,如属性等?processUpload
是处理文件的逻辑所在!您只需发送带有结构的表单,使用firebird或wireshark之类的工具检查您发送的内容是否正确,好吧,但我无法获取我的文件。我搜索了很多。有人说这是java中冲浪脚本中的一个bug。请你能帮我吗?Alfresco至少有一些这样做的例子,这就是我答案中的代码主要取自的地方!我只能建议您尝试将代码和webscript与Alfresco中的工作代码和webscript进行比较