bluemix 对象存储文件上传成功,但 0kb 文件正在使用 java 上传到对象存储
bluemix object storage file uploading successfully, but 0kb file is uploading on object storage using java
我正在使用 Bluemix 对象存储服务,并且 Java 通过编码将文件上传到对象存储。这是我将文件上传到对象存储的代码片段:
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ObjectStorageService objectStorage = authenticateAndGetObjectStorageService();
System.out.println("Storing file in post ObjectStorage...0508");
String containerName = request.getParameter("container");
String fileName = request.getParameter("file");
System.out.println("containerName in post: "+containerName +"And file name"+fileName);
if(containerName == null || fileName == null){ //No file was specified to be found, or container name is missing
response.sendError(HttpServletResponse.SC_NOT_FOUND);
System.out.println("File not found.");
return;
}
try {
final InputStream fileStream = request.getInputStream();
System.out.println("fileStream: "+fileStream);
Payload<InputStream> payload = new PayloadClass(fileStream);
objectStorage.objects().put(containerName, fileName, payload);
System.out.println("Successfully stored file in ObjectStorage!");
} catch (Exception e) {
System.out.println("Exception in uploaidng +"+e.toString());
// TODO: handle exception
}
}
但是,一个 0kb 的文件被上传到 Object Storage。
请使用 getData() 从 InputStream 中提取二进制文件。以下是 openstack4j getData 文档。
我唯一能让它工作的方法是将 MultiPart 注释放在 Servlet 上
@WebServlet("/objectStorage")
@MultipartConfig
public class SimpleServlet extends HttpServlet
并获取部分而不是整个 inputStream:
Part filePart = request.getPart("fileToUpload"); // Retrieves <input type="file" name="fileToUpload">
InputStream fileContent = filePart.getInputStream();
然后在 html 表单上将 enctype 设置为 multipart/formdata
<form action="objectStorage" method="post" enctype="multipart/form-data">
我的整个代码都是这样的:
HTML:
<form action="objectStorage" method="post" enctype="multipart/form-data">
Select image to upload:
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="text" name="nome" id="nome">
<input type="submit" value="Upload Image" name="submit">
</form>
Java代码:
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ObjectStorageService objectStorage = authenticateAndGetObjectStorageService();
System.out.println("Storing file in ObjectStorage...");
String containerName = "abc";
String fileName = request.getParameter("nome");
if (containerName == null || fileName == null) { //No file was specified to be found, or container name is missing
response.sendError(HttpServletResponse.SC_NOT_FOUND);
System.out.println("File not found.");
return;
}
try {
Part filePart = request.getPart("fileToUpload"); // Retrieves <input type="file" name="file">
InputStream fileContent = filePart.getInputStream();
Payload<InputStream> payload = new PayloadClass(fileContent);
objectStorage.objects().put(containerName, fileName, payload);
System.out.println("Upload Successful");
} catch (Exception e) {
System.out.println(e);
}
}
我正在使用 Bluemix 对象存储服务,并且 Java 通过编码将文件上传到对象存储。这是我将文件上传到对象存储的代码片段:
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ObjectStorageService objectStorage = authenticateAndGetObjectStorageService();
System.out.println("Storing file in post ObjectStorage...0508");
String containerName = request.getParameter("container");
String fileName = request.getParameter("file");
System.out.println("containerName in post: "+containerName +"And file name"+fileName);
if(containerName == null || fileName == null){ //No file was specified to be found, or container name is missing
response.sendError(HttpServletResponse.SC_NOT_FOUND);
System.out.println("File not found.");
return;
}
try {
final InputStream fileStream = request.getInputStream();
System.out.println("fileStream: "+fileStream);
Payload<InputStream> payload = new PayloadClass(fileStream);
objectStorage.objects().put(containerName, fileName, payload);
System.out.println("Successfully stored file in ObjectStorage!");
} catch (Exception e) {
System.out.println("Exception in uploaidng +"+e.toString());
// TODO: handle exception
}
}
但是,一个 0kb 的文件被上传到 Object Storage。
请使用 getData() 从 InputStream 中提取二进制文件。以下是 openstack4j getData 文档。
我唯一能让它工作的方法是将 MultiPart 注释放在 Servlet 上
@WebServlet("/objectStorage")
@MultipartConfig
public class SimpleServlet extends HttpServlet
并获取部分而不是整个 inputStream:
Part filePart = request.getPart("fileToUpload"); // Retrieves <input type="file" name="fileToUpload">
InputStream fileContent = filePart.getInputStream();
然后在 html 表单上将 enctype 设置为 multipart/formdata
<form action="objectStorage" method="post" enctype="multipart/form-data">
我的整个代码都是这样的:
HTML:
<form action="objectStorage" method="post" enctype="multipart/form-data">
Select image to upload:
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="text" name="nome" id="nome">
<input type="submit" value="Upload Image" name="submit">
</form>
Java代码:
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ObjectStorageService objectStorage = authenticateAndGetObjectStorageService();
System.out.println("Storing file in ObjectStorage...");
String containerName = "abc";
String fileName = request.getParameter("nome");
if (containerName == null || fileName == null) { //No file was specified to be found, or container name is missing
response.sendError(HttpServletResponse.SC_NOT_FOUND);
System.out.println("File not found.");
return;
}
try {
Part filePart = request.getPart("fileToUpload"); // Retrieves <input type="file" name="file">
InputStream fileContent = filePart.getInputStream();
Payload<InputStream> payload = new PayloadClass(fileContent);
objectStorage.objects().put(containerName, fileName, payload);
System.out.println("Upload Successful");
} catch (Exception e) {
System.out.println(e);
}
}