- 1、在java代碼中怎麼從服務器上把圖片拿來放到數據庫里
- 2、java實現圖片上傳至服務器並顯示,如何做?希望要具體的代碼實現
- 3、java 上傳圖片到CDN 亞馬遜服務器上,要回顯服務器的圖片,問題在這:
大概流程:
1.上傳插件的選擇:此篇博文選擇的是jQuery的zyupload文件上傳插件;
2.上傳請求發起後,java代碼的處理:你是要將上傳的圖片只保存在服務器還是只保存在數據庫還是說兩者都採取。上傳到服務器很簡單,保存到數據庫也很簡單,但是此處需要考慮業務,圖片保存在數據庫時採用哪種保存方式(本博文業務來自於項目,因為圖片數量巨多,故在數據庫是通過保存圖片的路徑實現的,並非二進制流);
3.圖片保存在數據庫後,在前段頁面的回顯功能。
很簡單。
可以手寫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又做了封裝,使用起來更傻瓜化,很容易掌握。
—————————–
以上回答,如有不明白可以聯繫我。
SVN在服務器端的存儲方式和客戶端是不一樣的,所以在服務器端是看不到源文件的。服務器端有兩種存儲方式FSFS和BDB,目前默認都是FSFS。
要導入文件有兩種做法:
1、用import指令,將客戶端文件夾導入到服務器端
2、先checkout空庫到客戶端,然後將要導入的文件夾放入客戶端checkout產生的空文件夾,然後執行add將這些文件夾納入SVN控制,最後執行commit上傳到服務器
建議用後一種方法,因為前一種方法如果操作失誤容易導致文件夾層次混亂
原創文章,作者:V1P9O,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/127231.html