我想上传带有发送http请求的文件到php。 我一遍又一遍地测试服务器上的php端,但是当我用这段代码发送请求时
private static void upload() {
File targetFile = new File("test.txt");
PostMethod filePost = new PostMethod("http://localhost/chat_upload/service/index.php/upload/do_upload");
try {
Part[] parts = {
new FilePart(targetFile.getName(), targetFile),
new StringPart("name", "userfile")
};
filePost.setRequestEntity(new MultipartRequestEntity(parts, filePost.getParams()));
org.apache.commons.httpclient.HttpClient client = new org.apache.commons.httpclient.HttpClient();
// client.getHttpConnectionManager().getParams().setConnectionTimeout(50000);
int status = client.executeMethod(filePost);
if (status == HttpStatus.SC_OK) {
System.out.println("Upload complete, response=" + filePost.getResponseBodyAsString());
} else {
System.out.println("Upload failed, response=" + HttpStatus.getStatusText(status));
}
} catch (Exception ex) {
System.out.println(ex.fillInStackTrace());
} finally {
filePost.releaseConnection();
}
}
此方法在控制台上发送文件并打印。当我跑,服务器说: 文件未被选中。
{我写php方面,当文件没有被选中时,这个错误打印}
如何解决这个问题?
答案 0 :(得分:1)
do_upload
处理程序可能正在查找名为file
的文件,但您没有按名称添加部件。
您需要3 parameter constructor来设置名称和文件名:
new FilePart("file", targetFile.getName(), targetFile)
或者是另一部分尝试设置部件名称?如果是,那么:
Part[] parts = {
new FilePart("userfile", targetFile.getName(), targetFile)
};