1. 程式人生 > >commons-fileupload上傳檔案(圖片)時路徑寫入資料庫時斜槓的問題

commons-fileupload上傳檔案(圖片)時路徑寫入資料庫時斜槓的問題

前端:常規的二進位制form表單,這裡不贅述了。

後端:常規的Java servlet處理資料。其關鍵的程式碼如下:

String _today = new SimpleDateFormat("yyyyMMdd")
		.format(new java.util.Date());
// 儲存的最終檔案路徑(伺服器端),其中realwebbase是通過request.getSession().getServletContext().getRealPath("/");方法獲取的伺服器路徑。
String u_name = realwebbase + "upload/letterPic/" + _today
		+ "/" + MyUtil.getUUID() + "." + t_ext;
try {
	// --------------------5------------------儲存檔案-----------------------------
	File _today_file = new File(realwebbase + "upload/letterPic/" + _today); // 構建檔案目錄
	if (!_today_file.exists()) {
		_today_file.mkdirs();
	}
	fileItem.write(new File(u_name));
	hm.put("letter_pic", u_name);//hm是一個作為返回值的HashMap物件
	hm.put("msg", "success");
} catch (Exception e) {
	// TODO: handle exception
	e.printStackTrace();
}
這樣寫的話,在伺服器端可以看到最終圖片的上傳路徑為:
圖片路徑::D:\javasoft\apache-tomcat-6.0.10\webapps\xinyu\upload/letterPic/20170428/e3460fe5-8f81-4fb6-8eba-ae33cbeaa27a.jpg
看到那方向不一致的斜槓,心想:壞了!!果然,開啟資料看資料的時候發現右斜槓並沒有作為一個字元寫進去(也許寫入資料庫的時候右斜槓被視為一個轉義符號了)。反而寫入的是這麼一串東西:結果圖---可以發現右斜槓其實已經完全被過濾了。

【為什麼會出現這種情況?如何避免?】

這種情況的出現,是因為寫入資料庫的時候相應處理程序把右斜槓“\”當做轉義符了——這樣就導致讀取檔案路徑的時候無法找到正確的檔案。

網路上的以“\\”代替“\”的方法行不通!這樣做獲得的一串沒有斜槓的字串;

網路上的以“#6”編碼代替“\”的方法也行不通!這樣做獲得的也是一串沒有斜槓的字串;

正確的解決方法:

1、可以通過替換字元,將轉義符換成左斜槓;

2、字串擷取,建立檔案/儲存檔案的時候使用絕對路徑,寫入資料庫的時候用相對路徑;

相關推薦

commons-fileupload檔案圖片路徑寫入資料庫的問題

前端:常規的二進位制form表單,這裡不贅述了。 後端:常規的Java servlet處理資料。其關鍵的程式碼如下: String _today = new SimpleDateFormat("yyyyMMdd") .format(new java.util.Date

SpringMVC檔案圖片並儲存到本地

SpringMVC上傳檔案(圖片)並儲存到本地 小記一波~ 基本的MVC配置就不展示了,這裡給出核心程式碼 在spring-mvc的配置檔案中寫入如下配置 <bean id="multipartResolver" class="org.springframewor

一鍵jquery非同步檔案圖片的實現檔案進度讀取未做

本文采用boostrap、、jquery、jade(html的一種模板)、nodejs實現 最終實現的效果:一個按鈕在選擇完檔案後,自動上傳到後臺; -改變input樣式 在form表單中,用<a>包裹<input type="file">,讓i

springmvc檔案圖片

環境:springmvc+spring+mybatis 前提環境,需要把ssm框架搭建好,如果沒有搭建的話可以先搭建這個框架 然後需要新增jar包 pom裡面新增 <!-- 上傳元件 --> <!-- https://mvnre

js檔案圖片限制格式及大小為3M · 觀止

如果你想快速解決這個問題,看本文就夠了。查了好多資料,終於解決了,太耗時間了,本文留給給後來者,希望你們工作的更輕鬆 本文儲存為.html檔案用瀏覽器開啟即可測試功能 <form id="fo

js檔案圖片限制格式及大小

如果你想快速解決這個問題,看本文就夠了。查了好多資料,終於解決了,太耗時間了,本文留給給後來者,希望你們工作的更輕鬆 本文儲存為.html檔案用瀏覽器開啟即可測試功能 <form id="form1" name="form1" method="post" actio

阿里雲 javascript檔案圖片、視訊、壓縮包等檔案到 物件儲存 OSS ,返回檔案圖片、音訊、視訊等URL路徑

目的:前端上傳檔案(圖片、視訊、音訊等)到阿里雲伺服器裡面,並且獲得上傳檔案的URL路徑 前提:首先要買一個阿里雲伺服器,自己百度不會; 第一步:登入阿里雲賬號,點選管理控制檯-->物件儲存 OSS 第二步:新建儲存空間(圖一、圖二) (圖一) (圖二

iOS使用表單流檔案圖片/文字/...

#define HTTP_CONTENT_BOUNDARY @"----WebKitFormBoundarywpMAGHPPMfSNBkkK----" + (BOOL)httpPutDataWithUploadDate:(NSString *)uplo

jsp form表單提交獲取返回資料也可用來檔案圖片

function fileImport() {        var form = $("#表單id");          var options  = {               url:"表單提交地址",                 type:'post

Spring MVC 4 使用常規的fileupload檔案帶原始碼

package com.websystique.springmvc.controller; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; impor

springboot/springmvc檔案CommonsMultipartResolver

上一篇博文講到了(Servlet3.0支援)的檔案上傳:https://blog.csdn.net/frozenpower/article/details/81141297 這篇我們來看可配置的檔案上傳解析器CommonsMultipartResolver CommonsMultipartR

SpringBoot結合commons-fileupload檔案

首先pom檔案引入相關依賴: <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifac

使用表單檔案

先寫一個簡單的表單,根據上一篇文章說的步驟進行 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCT

使用form表單檔案

今天在專案中要寫一個上傳檔案的功能,使用jsp中的form表單的形式完成。 首先新建一個jsp,使用最原始的form表單來完成。 jsp中的程式碼如下,很簡單: <form method="post" action="<%=ermDomainUrl %>

H5標籤input標籤檔案

之前專案做檔案上傳(本篇著重講純圖片上傳)的時候,一般都是用的flash外掛。 H5的input標籤提供了type=file的檔案上傳功能,那麼如何用這個標籤實現前後端之間的檔案上傳呢。 百度了一下,一個能用的都沒有,都有BUG,講的也很複雜,好氣喔,自己寫

百度外掛webupload檔案圖片設定

var uploader = WebUploader.create({ //auto : true, swf : '${ctx}/stat

用MVC實現簡單的檔案圖片下載功能

  一 實現效果簡單說明 上傳:上傳圖片,將圖片儲存到伺服器,並將相關資訊寫入資料庫。 下載:在頁面展示圖片下載列表的縮圖,點選圖片將其載入到本地。   二.View Index中程式碼 <h2>圖片上傳區</h2> <hr/> &l

Retrofit 檔案圖片和引數同時的方法

參考如下方式 @Multipart @POST(NRConfig.UPDATE_FILES) Call<Result<UpdateFilesEntity>> updateOneFile(@PartMap Map<String,RequestBo

利用開源元件commons-fileupload圖片檔案(2)

上一篇文章講解了比較基礎的檔案上傳,並沒有將相關資料寫入資料庫。在實際開發專案中,我們有時候為了來描述我們上傳的圖片,我們會在上傳圖片的同時,上傳一些與圖片相關的屬性,這時就涉及到後臺怎樣分別獲取圖片檔案和普通的字串變數。上傳檔案使用Common-FileUpload這個開

java ajax非同步檔案文件、圖片都可以

在寫專案的時候,經常用到圖片上傳啊什麼的,這兒提供一個方法,萬能,咋都能用。 ajax $(".save-head").click(function () { var formData = new FormData();