io.netty.handler.codec.http.multipart.Attribute #io.netty.handler.codec.http.multipart.HttpPostRequestDecoder.EndOfDataDecoderException源码实例Demo

下面列出了 io.netty.handler.codec.http.multipart.Attribute #io.netty.handler.codec.http.multipart.HttpPostRequestDecoder.EndOfDataDecoderException 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: zbus-server   文件: HttpWsServer.java

private void handleUploadMessage(io.netty.handler.codec.http.HttpMessage httpMsg, Message uploadMessage) throws IOException{
	if (httpMsg instanceof HttpContent) { 
           HttpContent chunk = (HttpContent) httpMsg;
           decoder.offer(chunk); 
           try {
               while (decoder.hasNext()) {
                   InterfaceHttpData data = decoder.next();
                   if (data != null) {
                       try { 
                       	handleUploadFile(data, uploadMessage);
                       } finally {
                           data.release();
                       }
                   }
               }
           } catch (EndOfDataDecoderException e1) { 
           	//ignore
           }
           
           if (chunk instanceof LastHttpContent) {  
           	resetUpload();
           }
       }
}
 

/**
 * Example of reading request by chunk and getting values from chunk to chunk
 */
private void readHttpDataChunkByChunk() {
    try {
        while (decoder.hasNext()) {
            InterfaceHttpData data = decoder.next();
            if (data != null) {
                try {
                    // new value
                    writeHttpData(data);
                } finally {
                    data.release();
                }
            }
        }
    } catch (EndOfDataDecoderException e1) {
        // end
        responseContent.append("\r\n\r\nEND OF CONTENT CHUNK BY CHUNK\r\n\r\n");
    }
}
 

/**
 * True if at current getStatus, there is an available decoded
 * InterfaceHttpData from the Body.
 *
 * This getMethod works for chunked and not chunked request.
 *
 * @return True if at current getStatus, there is a decoded InterfaceHttpData
 * @throws EndOfDataDecoderException
 *             No more data will be available
 */
@Override
public boolean hasNext() {
    checkDestroyed();

    if (currentStatus == MultiPartStatus.EPILOGUE) {
        // OK except if end of list
        if (bodyListHttpDataRank >= bodyListHttpData.size()) {
            throw new EndOfDataDecoderException();
        }
    }
    return !bodyListHttpData.isEmpty() && bodyListHttpDataRank < bodyListHttpData.size();
}
 

/**
 * True if at current getStatus, there is an available decoded
 * InterfaceHttpData from the Body.
 *
 * This getMethod works for chunked and not chunked request.
 *
 * @return True if at current getStatus, there is a decoded InterfaceHttpData
 * @throws EndOfDataDecoderException
 *             No more data will be available
 */
@Override
public boolean hasNext() {
    checkDestroyed();

    if (currentStatus == MultiPartStatus.EPILOGUE) {
        // OK except if end of list
        if (bodyListHttpDataRank >= bodyListHttpData.size()) {
            throw new EndOfDataDecoderException();
        }
    }
    return !bodyListHttpData.isEmpty() && bodyListHttpDataRank < bodyListHttpData.size();
}
 
源代码5 项目: Summer   文件: WebRequestHandler.java

private void doPost(ChannelHandlerContext ctx, SessionContext sctx) {
	WebRequest webRequest = getWebRequest();
	JSONObject data = webRequest.getData();
	try {
		while (postRequestDecoder.hasNext()) {
			InterfaceHttpData httpData = postRequestDecoder.next();
			try {
				if (httpData.getHttpDataType() == HttpDataType.Attribute || 
						httpData.getHttpDataType() == HttpDataType.InternalAttribute) {
					Attribute attribute = (Attribute) httpData;
					data.put(attribute.getName(), attribute.getValue());
				} else if (httpData.getHttpDataType() == HttpDataType.FileUpload) {
					FileUpload fileUpload = (FileUpload) httpData;
					if (fileUpload.isCompleted()) {
						webRequest.getFileUploadMap().put(fileUpload.getName(), new WebFileUpload(fileUpload));
					} else {
						log.error("fileUpload not complete name[{}]", fileUpload.getName());
					}
				}
			} catch (Exception e) {
				log.error(e.getMessage(), e);
			} finally {
				postRequestDecoder.removeHttpDataFromClean(httpData);
				httpData.release();
			}
		}
	} catch (EndOfDataDecoderException ignored) {
		
	}
	if (webRequest.isDynamic()) {
		doWork(ctx, sctx, webRequest);
	} else {
		doFile(ctx, sctx, webRequest);
	}
}
 

/**
 * True if at current getStatus, there is an available decoded
 * InterfaceHttpData from the Body.
 *
 * This getMethod works for chunked and not chunked request.
 *
 * @return True if at current getStatus, there is a decoded InterfaceHttpData
 * @throws EndOfDataDecoderException
 *             No more data will be available
 */
@Override
public boolean hasNext() {
    checkDestroyed();

    if (currentStatus == MultiPartStatus.EPILOGUE) {
        // OK except if end of list
        if (bodyListHttpDataRank >= bodyListHttpData.size()) {
            throw new EndOfDataDecoderException();
        }
    }
    return !bodyListHttpData.isEmpty() && bodyListHttpDataRank < bodyListHttpData.size();
}
 

/**
 * True if at current getStatus, there is an available decoded
 * InterfaceHttpData from the Body.
 *
 * This getMethod works for chunked and not chunked request.
 *
 * @return True if at current getStatus, there is a decoded InterfaceHttpData
 * @throws EndOfDataDecoderException
 *             No more data will be available
 */
@Override
public boolean hasNext() {
    checkDestroyed();

    if (currentStatus == MultiPartStatus.EPILOGUE) {
        // OK except if end of list
        if (bodyListHttpDataRank >= bodyListHttpData.size()) {
            throw new EndOfDataDecoderException();
        }
    }
    return !bodyListHttpData.isEmpty() && bodyListHttpDataRank < bodyListHttpData.size();
}
 
源代码8 项目: blynk-server   文件: UploadHandler.java

private String finishUpload() throws Exception {
    String pathTo = null;
    try {
        while (decoder.hasNext()) {
            InterfaceHttpData data = decoder.next();
            if (data != null) {
                if (data instanceof DiskFileUpload) {
                    DiskFileUpload diskFileUpload = (DiskFileUpload) data;
                    Path tmpFile = diskFileUpload.getFile().toPath();
                    String uploadedFilename = diskFileUpload.getFilename();
                    String extension = "";
                    if (uploadedFilename.contains(".")) {
                        extension = uploadedFilename.substring(uploadedFilename.lastIndexOf("."),
                                uploadedFilename.length());
                    }
                    String finalName = tmpFile.getFileName().toString() + extension;

                    //this is just to make it work on team city.
                    Path staticPath = Paths.get(staticFolderPath, uploadFolder);
                    if (!Files.exists(staticPath)) {
                        Files.createDirectories(staticPath);
                    }

                    Files.move(tmpFile, Paths.get(staticFolderPath, uploadFolder, finalName),
                            StandardCopyOption.REPLACE_EXISTING);
                    pathTo =  uploadFolder + finalName;
                }
            }
        }
    } catch (EndOfDataDecoderException endOfData) {
        //ignore. that's fine.
    } finally {
        // destroy the decoder to release all resources
        decoder.destroy();
        decoder = null;
    }

    return pathTo;
}