我试图上传一个zip文件。在我的项目中,我在客户端使用DWR,在服务器端使用Java。正如我所看到的在DWR教程上传数据(它不是在他们的网站。他们提供其与dwr.rar束)它们由下面线得到输入。
var image = dwr.util.getValue('uploadImage');
var file = dwr.util.getValue('uploadFile');
var color = dwr.util.getValue('color');
dwr.util.getValue()是一个实用程序来得到任何元素的值,在这种情况下在教程object.//Mentioned一个文件。
因此,我通过以下代码使用该实用程序获得了一个zip文件。
使用Javascript:
function uploadZip(){
var file = dwr.util.getValue("uploadFile");
dwr.util.setValue("uploadFile", null);
DataUpload.uploadData(file, function(data){
if(data != null){
$("#zipURL").html("<p>Upload Completed!!!</p>");
$("#zipURL").append("Location: "+data.path2);
}
});
}
HTML:
<html>
<head>ZIP Uploader
</head>
<body>
<table>
<tr><td>Select File: </td><td><input type="file" id="uploadFile" /></td>
<tr><td><input type="button" value="Upload" onclick="uploadZip()" /></td></tr> </table>
<div id="result"><span id="imgURL"></span>
<span id="zipURL"></span></div>
</body>
</html>
Java代码是:
public class DataUpload {
private static String DATA_STORE_LOC = "D:/BeenodData/Trials/";
public Path uploadData(InputStream file) throws IOException{//In the tutorial the
//parameters are in type of BufferedImage & String.
//They used it for image and text file respectively.
//In an another example(out of DWR site) they used InputStream for receiving
//image
try {
byte[] buffer = new byte[1024];
int c;
File f2 = new File(DATA_STORE_LOC+dat+".zip");
path.setPath2(DATA_STORE_LOC+dat+".zip");
FileOutputStream fos = new FileOutputStream(f2);
c = file.read();
System.out.println(c);
while ((c = file.read()) != -1) {
fos.write(c);
}
file.close();
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return path;
}
此代码运行时没有错误。但输出是一个空的zip文件。我知道我做错了什么。我找不到。
实际上,我收到的是一个zip文件 的InputStream。
我该如何写 a InputStream(zip文件)到zip.file 用java?
如果我设置java会发生什么 方法参数为
ZipFile file
?一世 没有尝试过,但因为,我 还在寻找一个好的教程 了解它。
任何建议或链接都会更加赞赏!!!!! 在此先感谢!!!
答案 0 :(得分:2)
这里有2个关于创建ZIP文件的示例:
http://www.java2s.com/Tutorial/Java/0180_File/0601_ZipOutputStream.htm
以下是有关阅读ZIP文件的示例:
答案 1 :(得分:0)
我还用Java实现了相同类型的后端代码,并且遇到了相同的Zip文件问题,但是其内容为空。
后来我发现我正在向API发出请求,因为我正在附加的文件不是--data-binary
格式。因此,然后我以这种格式发出了请求。
curl --data-binary @"/mnt/c/checknew.zip" http://localhost/api/upload
我不确定您正在使用multipart/form-data
或Base-64
编码的请求格式。
当我发出Base-64编码的请求(即--data-binary
)时,我的代码可以正常工作