自己搭建圖片伺服器
Ⅰ 如何把圖片發布到遠程
在圖片伺服器建立一個ftp伺服器就可以了。
1.
如果圖片伺服器沒有外部IP,只有WEB有,在WEB上面做 21 埠轉發到圖片伺服器就可以了。
只是這樣會比較麻煩和復雜。FTP伺服器需要考慮主動和被動的模式。
2.
或者用VPN,在圖片伺服器和客戶端連接,這樣什麼問提都沒有了。不過這樣會是商業模式。
3.
弄外部IP地址配圖片伺服器。或者遠控帶傳輸文件的軟體。
方法狠很多,看你的承受。有技術,有收費,有免費,有安全,有不太安全的。
Ⅱ 網站的圖片一般是存在伺服器還是資料庫
伺服器,尤其是目前圖片越來越大
解析度越來越高
如果以二進制存在伺服器,那伺服器讀寫性能以及開銷就太大了
一般都是存在伺服器,或者可以考慮利用nginx搭建一套專門的圖片伺服器
希望能幫助到你
Ⅲ 圖片網站 需要什麼配置的伺服器
聯想 dell hp 的當前伺服器都可以
更換固態硬碟
帶寬自行計算,按並發訪問量 * 圖片平均大小 * 8 = 帶寬,再增加一些冗餘
給你段代碼,是用來在ie上顯示圖片的(servlet):
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String id = request.getParameter("id");
File file = new File(getServletContext().getRealPath("/")+"out"+"/"+id+".gif");
response.setCharacterEncoding("gb2312");
response.setContentType("doc");
response.setHeader("Content-Disposition", "attachment; filename=" + new String(file.getName().getBytes("gb2312"),"iso8859-1"));
System.out.println(new String(file.getName().getBytes("gb2312"),"gb2312"));
OutputStream output = null;
FileInputStream fis = null;
try
{
output = response.getOutputStream();
fis = new FileInputStream(file);
byte[] b = new byte[1024];
int i = 0;
while((i = fis.read(b))!=-1)
{
output.write(b, 0, i);
}
output.write(b, 0, b.length);
output.flush();
response.flushBuffer();
}
catch(Exception e)
{
System.out.println("Error!");
e.printStackTrace();
}
finally
{
if(fis != null)
{
fis.close();
fis = null;
}
if(output != null)
{
output.close();
output = null;
}
}
}
這個程序的功能是根據傳入的文件名(id),來為瀏覽器返回圖片流,顯示在<img>標簽里
標簽的格式寫成如下:
<img src="http://localhost:8080/app/preview?id=111 "/><br/>
顯示的是111.gif這個圖片
你上面的問題:
1.我覺得你的第二個辦法是對的,我們也是這樣做的,需要的是把資料庫的記錄id號傳進servlet,然後讀取這條記錄中的路徑信息,生成流以後返回就是了
關於上傳文件的問題,我記得java中應該專門有個負責文件上傳的類,你調用就行了,上傳後存儲在指定的目錄里,以實體文件的形式存放
你可以參考這個:
http://blog.csdn.net/arielxp/archive/2004/09/28/119592.aspx
回復:
1.是的,在response中寫入流就行了
2.是發到servlet中的,我們一般都是寫成servlet,短小精悍,使用起來方便,struts應該也可以,只是我沒有試過,恩,你理解的很對
Ⅳ 圖片伺服器的搭建01
nginx+vsftp搭建圖片伺服器
前言:
在分布式架構中,往往會有多個tomcat,然後你上傳的圖片只是在其中的某一個tomcat,你訪問時是由集群的tomcat隨機提供服務。當你訪問的tomcat是有圖片的那個時,圖片能正常顯示,如果恰巧是那個沒有圖片的tomcat時,圖片就不能正常顯示。這就完成了訪問同一個圖片,可能你刷新一次可以訪問,再刷新一次圖片就訪問不到了。這時,我們就需要一個伺服器用來專門存儲圖片,一般我們都用nginx。
1、nginx+vsftp:
上面分別介紹了nginx和vsftp,那麼這兩個東西怎麼組合起來用呢?怎麼實現這個圖片伺服器呢?我們知道,tomcat安裝好啟動後,在瀏覽器輸入localhost:8080,就會出現tomcat的歡迎頁,nginx也一樣。比如linux的ip是192.168.50.122,那麼啟動nginx後,在瀏覽器訪問這個地址也會出現nginx的歡迎頁,其實是因為它有個默認的訪問頁面,完整的地址應該是192.168.50.122/index.html,那麼我們就可以根據這個,把它默認的訪問頁面改成我們上傳的圖片的保存路徑,比如上傳了一張pic.jpg圖片到linux的/home/ftpuser/images中,如果我們把默認訪問頁面改成/home/ftpuser,那麼在瀏覽器中輸入192.168.50.122/images/pic.jpg,就可以訪問到這張圖片了。下面就來介紹nginx、vsftp的安裝以及配置。
<meta charset="utf-8">
1、安裝:
2、添加ftp用戶:
3、給ftp用戶添加密碼:
輸入兩次密碼後修改密碼。
4、修改selinux:
①查看狀態:
執行這個命令可以看到
這兩個都off,執行如下命令設置為on:
再次執行 getsebool -a | grep ftp 看到那兩個狀態是on就行了。
5、關閉匿名訪問:
執行
命令:
還要在vsftp.conf文件最下面添加以下內容:
然後保存退出即可。
6、設置開機啟動:
7、測試:
打開filezilla工具,輸入虛擬機的ip,21埠,用戶名和密碼,點擊快速連接,連接vsftp服務:
如圖所示則連接成功。
<meta charset="utf-8">
按照以上步驟安裝好nginx和vsftp後,還是不能訪問上傳的圖片的,需要進行如下配置:
執行
命令,打開nginx的配置文件:
按道理這樣就可以了,但是我訪問卻報錯:
403 forbidden ,最後發現是因為ftpuser文件夾沒有可讀許可權,執行如下命令:
再次訪問即可成功!
至此圖片伺服器搭建完成!至於在Java中如何使用這個圖片伺服器,請參考 Java實現把圖片上傳到圖片伺服器 。
在搭建的過程中,遇到很多坑,因為我參考的教程是centos 6,防火牆是iptables,而centos 7是firewall,
Ⅵ 放十五萬張圖片的伺服器需要多少容量
150000*5M(估算5M一張)/1024
不到1T
你在算上系統等其他的 如果做陣列 Raid1
那麼建議2T容量
Ⅶ java實現圖片上傳至伺服器並顯示,如何做希望要具體的代碼實現
很簡單。
可以手寫IO讀寫(有點麻煩)。
怕麻煩的話使用FileUpload組件 在servlet里doPost嵌入一下代碼
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
response.setContentType("text/html;charset=gb2312");
PrintWriter out=response.getWriter();
//設置保存上傳文件的目錄
String uploadDir =getServletContext().getRealPath("/up");
System.out.println(uploadDir);
if (uploadDir == null)
{
out.println("無法訪問存儲目錄!");
return;
}
//根據路徑創建一個文件
File fUploadDir = new File(uploadDir);
if(!fUploadDir.exists()){
if(!fUploadDir.mkdir())//如果UP目錄不存在 創建一個 不能創建輸出...
{
out.println("無法創建存儲目錄!");
return;
}
}
if (!DiskFileUpload.isMultipartContent(request))
{
out.println("只能處理multipart/form-data類型的數據!");
return ;
}
DiskFileUpload fu = new DiskFileUpload();
//最多上傳200M數據
fu.setSizeMax(1024 * 1024 * 200);
//超過1M的欄位數據採用臨時文件緩存
fu.setSizeThreshold(1024 * 1024);
//採用默認的臨時文件存儲位置
//fu.setRepositoryPath(...);
//設置上傳的普通欄位的名稱和文件欄位的文件名所採用的字元集編碼
fu.setHeaderEncoding("gb2312");
//得到所有表單欄位對象的集合
List fileItems = null;
try
{
fileItems = fu.parseRequest(request);//解析request對象中上傳的文件
}
catch (FileUploadException e)
{
out.println("解析數據時出現如下問題:");
e.printStackTrace(out);
return;
}
//處理每個表單欄位
Iterator i = fileItems.iterator();
while (i.hasNext())
{
FileItem fi = (FileItem) i.next();
if (fi.isFormField()){
String content = fi.getString("GB2312");
String fieldName = fi.getFieldName();
request.setAttribute(fieldName,content);
}else{
try
{
String pathSrc = fi.getName();
if(pathSrc.trim().equals("")){
continue;
}
int start = pathSrc.lastIndexOf('\\');
String fileName = pathSrc.substring(start + 1);
File pathDest = new File(uploadDir, fileName);
fi.write(pathDest);
String fieldName = fi.getFieldName();
request.setAttribute(fieldName, fileName);
}catch (Exception e){
out.println("存儲文件時出現如下問題:");
e.printStackTrace(out);
return;
}
finally //總是立即刪除保存表單欄位內容的臨時文件
{
fi.delete();
}
}
}
注意 JSP頁面的form要加enctype="multipart/form-data" 屬性, 提交的時候要向伺服器說明一下 此頁麵包含文件。
如果 還是麻煩,乾脆使用Struts 的上傳組件 他對FileUpload又做了封裝,使用起來更傻瓜化,很容易掌握。
-----------------------------
以上回答,如有不明白可以聯系我。
Ⅷ 我想做一個個人網站,只有文字和圖片的,需要什麼配置的雲伺服器呢,我買了雲主機和域名之後還要做什麼
從你描述的網站訪問量來看,這個雲伺服器配置夠用了,但考慮到現在2003系統比較老,早已經停止更新,一般常用的是2008或2012,而這2個系統對內存的要求至少是2G以上,所以個人建議用2G內存的配置比較穩妥。雲伺服器開通以後,你需要做的是在上面安裝網站所需要的運行環境,比如說ASP環境或者PHP環境,然後搭建下FTP,然後在本地把網站程序上傳,並通過IIS發布網站,另外你需要注冊一個域名,把域名解析並綁定,完成以上這些操作,才是一個完整的網站。