上網找到的取得HttpServletRequest 都不適用於alfresco 3.4.5版本
// NOTE: This web script must be executed in a HTTP Servlet environment
// if (!(req instanceof WebScriptServletRequest)) {
// throw new WebScriptException(
// "Content retrieval must be executed in HTTP Servlet environment");
// }
// HttpServletRequest httpReq = ((WebScriptServletRequest)req).getHttpServletRequest();
發生錯誤如下: ClassCastException
protected Map<string, object> executeImpl(
WebScriptRequest req,
Status status,
Cache cache) {
WrappingWebScriptRequest wrappingWebScriptRequest = (WrappingWebScriptRequest) req;
WebScriptRequest webScriptRequest = wrappingWebScriptRequest.getNext();
WebScriptServletRequest servletRequest = (WebScriptServletRequest) webScriptRequest;
FormField uploadFile = servletRequest.getFileField("file");
//file field
uploadFileName = uploadFile.getFilename();
uploadMIMEType = uploadFile.getMimetype();
uploadContent = uploadFile.getInputStream();
System.out.println("[form data] filename:" + uploadFileName);
System.out.println("[form data] mimetype:" + uploadMIMEType);
//do something
}
用以下這段程式就能正常取得上傳檔案了,先前的中文問題出在client指定錯誤編碼了,繞了一大圈竟然是手誤呀!!
//how to get WebScriptServletRequest WrappingWebScriptRequest wrappingWebScriptRequest = (WrappingWebScriptRequest) req; WebScriptRequest webScriptRequest = wrappingWebScriptRequest.getNext(); WebScriptServletRequest servletRequest = (WebScriptServletRequest) webScriptRequest; //get data form form FormData formData = (FormData)servletRequest.parseContent(); FormData.FormField[] formFields = formData.getFields(); int fieldsLen = formFields.length; for(int i=0;i如果要做更複雜的行為不在這篇的討論範例 :)

沒有留言:
張貼留言
留個話吧:)