java文件下載的問題,還沒解決,
java文件下載,我這里用得的是一個Apache FtpClient jar包,遇到的問題,如下:
1:上傳圖片,到服務器上面,打開花面,原來是沒用二進制進行傳輸
修改為 ftpClient.setFileType(FTP.BINARY_FILE_TYPE); 這樣上傳就能解決圖片花面
為什么選擇用Ftp上傳呢, 平常我們web頁面 都是Apache fileupload 類,但是apache fileupLoad 只能在web應用 傳輸,用ftp,可以傳輸在不同的主機地址,只要主機上,搭建 了Ftp服務器,
if(isMult==true) //說明是
{
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List<FileItem> items = upload.parseRequest(request);
Iterator<FileItem> itr = items.iterator();
while (itr.hasNext()) {
FileItem item = (FileItem) itr.next();
{
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List<FileItem> items = upload.parseRequest(request);
Iterator<FileItem> itr = items.iterator();
while (itr.hasNext()) {
FileItem item = (FileItem) itr.next();
FTPClient ftpClient=new FTPClient();
ftpClient.connect("127.0.0.1", 2121);
ftpClient.login("admin", "admin");
out.print(ftpClient.getRemotePort());
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
ftpClient.setControlEncoding("GBK");
ftpClient.addProtocolCommandListener(new PrintCommandListener(
new PrintWriter(System.out)));
//out.println(ftpClient.getReplyCode());
//設置上傳工作目錄 不設置,默認 res\home
//ftpClient.changeWorkingDirectory("/");
// FileInputStream fileInputStream=new FileInputStream(fullFile);
String newFileName="test_"+new Random().nextInt(10000)+".jpeg";
ftpClient.storeFile(newFileName,item.getInputStream());
ftpClient.connect("127.0.0.1", 2121);
ftpClient.login("admin", "admin");
out.print(ftpClient.getRemotePort());
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
ftpClient.setControlEncoding("GBK");
ftpClient.addProtocolCommandListener(new PrintCommandListener(
new PrintWriter(System.out)));
//out.println(ftpClient.getReplyCode());
//設置上傳工作目錄 不設置,默認 res\home
//ftpClient.changeWorkingDirectory("/");
// FileInputStream fileInputStream=new FileInputStream(fullFile);
String newFileName="test_"+new Random().nextInt(10000)+".jpeg";
ftpClient.storeFile(newFileName,item.getInputStream());
2:圖片下載
下載的問題還沒解決
現象:圖片下載到本機,打開的圖片是空白,不知道是什么原因
response.setContentType("application/x-msdownload");
//設置彈出對話框 為下載對話框
response.setHeader("Content-Disposition", "attachment;filename=\"" + file_name + "\"" );
// 通過輸入輸出流 下載 文件
java.io.InputStream input =new FileInputStream(ff);
byte r[]=new byte[1024];
OutputStream outputStream=response.getOutputStream();
byte r[]=new byte[1024];
OutputStream outputStream=response.getOutputStream();
int c;
while((c=input.read(r))!=-1)
{
outputStream.write(r, 0, c);
}
outputStream.flush();
input.close();
outputStream.close();
while((c=input.read(r))!=-1)
{
outputStream.write(r, 0, c);
}
outputStream.flush();
input.close();
outputStream.close();
下載下來,就是空白,但是文件大小一樣大,
但是去掉 response.setHeader()那個 彈出對話框 為下載對話框, 圖片文件,就沒問題,奇怪啊,先記在這里
本文由用戶 chyx413332087 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!