2011年4月1日 星期五

httpclient file中文檔名上傳

要先認證(我用NTLM)

NTCredentials creds = new NTCredentials("帳", "密", "", "網域");
httpclient.getCredentialsProvider().setCredentials(AuthScope.ANY, creds);


HttpPost httppost = new HttpPost("上傳目標位置");
httpclient.getParams().setParameter(CoreProtocolPNames.HTTP_CONTENT_CHARSET,"UTF-8");
httpclient.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION,HttpVersion.HTTP_1_1);
FileBody bin = new FileBody(new File(sourcePath),"","UTF-8");
StringBody title = new StringBody(fileName,Charset.forName("UTF-8"));

MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE,null,Charset.forName("UTF-8"));

reqEntity.addPart("file", bin);
reqEntity.addPart("fileTitle", title);

httppost.setEntity(reqEntity);

HttpResponse response = httpclient.execute(httppost);
EntityUtils.consume(resEntity);
try {
httpclient.getConnectionManager().shutdown();
} catch (Exception ee) {ee.printStackTrace(); }


***接收***
使用org.apache.commons.fileupload.FileItem 套件
怎麼接收檔案就不描述了
字串接收

if ("fileTitle".equals(item.getFieldName())) {
fileTitle = new String(item.getString().getBytes("ISO-8859-1"), "UTF-8");
}

檔案接收
可接收檔名

originalFileName = item.getName();
System.out.println("originalFileName:"+originalFileName);


有任何問題請留言或mail可以討論