此教程我们使用常用的multipart/form-data同过post方式实现上传,上传实现依旧使用了 tapestry的UploadedFile组件,我随便写了个字符串to,这个字符串可以随便命名的,没有具体实际意义,作用就是传一个值到上传处理页面让它知道执行了上传这个动作。还需要创建一个解码器。代码如下:
UploadTypeFile.tml
<html t:type="layout" title="tapestryStart Index" t:sidebarTitle="Framework Version"
xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd" xmlns:p="tapestry:parameter">
<form action="UploadTypeFile/to/" method="post" enctype="multipart/form-data" >
<input type="file" name="filename1"/><br/>
<input type="file" name="filename2"/><br/>
<input type="text" name="files" value="filename1,filename2"/><br/>
<input type="submit" value="Submit" />
</form>
</html>
/**
*
*/
package corner.app.pages.upload;
import java.io.File;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.services.Request;
import org.apache.tapestry5.upload.services.MultipartDecoder;
import org.apache.tapestry5.upload.services.UploadedFile;
/**
* @author <a href="mailto:[email protected]">xiafei</a>
*
*/
public class UploadTypeFile {
@Property
private UploadedFile file;
@Inject
private MultipartDecoder decoder;
@Inject
private Request request;
void onActivate(String to) {
String files = request.getParameter("files");
String [] names = files.split(",");
for(String s : names){
file = decoder.getFileUpload(s);
File copied = new File("c:\\", file.getFileName());
file.write(copied);
}
}
}