aspnetmvc上傳圖片
1. springmvc上傳圖片file already exists and could not deleted
targetFile.mkdirs();
為什麼是創建目錄?
createNewFile().
除了以上修改,還要檢查你的文件是否正在使用,就是就打開操作但無關閉操作。
2. MVC圖書管理實現上傳圖片功能
展開全部
如果只是上傳的話那太容易了,如果還要顯示那就難了,因為要顯示的話就不能只向伺服器提交一次請求,必須非同步提交。下面的例子是我親自寫的,非同步提交上傳圖片並預覽。全部代碼都在。
首先建一個html文件,復制以下html文本。使用說明:
引用jquery兩個js文件,網上自己搜吧,到處都有。
<script src="jquery-1.4.2.min.js" type="text/javascript"></script>
<script src="jquery.form.js" type="text/javascript"></script>
2.添加兩個文本框,第一個ID必須是「bigImage1」,第二個必須是「smallbigImage1」。
<input type="text" name="url1" id="bigImage1" style="width:150px;" onclick="selectImage(this)" />
<input type="hidden" name="smallUrl1" id="smallbigImage1" value="" />
當點擊第一個文本框時,彈出一個上傳窗口,選擇一張圖片並點「上傳」,上傳成功後可預覽圖片。此過程會在伺服器上把原圖片生成一張縮略圖,並把原圖URL和縮略圖URL一起以JSON格式返回到前台頁面,臨時顯示縮略圖。當點擊「確定」時,它會把兩個URL添加到兩個對應ID的文本框。第二個框是隱藏的,給用戶的感覺就像是只返回一個URL一樣。
3. asp.net mvc 上傳照片保存到資料庫
照片存到資料庫,有兩種方式,一種直接圖片轉成二進制文件存到資料庫,另一種將圖片放在伺服器指定文件中,在資料庫中存儲圖片物理路徑,如果圖片較多,建議存圖片對應物理路徑
4. mvc視圖中怎麼上傳圖片並顯示
如果只是上傳的話那太容易了,如果還要顯示那就難了,因為要顯示的話就不能只向伺服器提交一次請求,必須非同步提交。下面的例子是我親自寫的,非同步提交上傳圖片並預覽。全部代碼都在。
返回到前台頁面的JSON格式對象是以類的對象。
publicclassReturnImage
{
publicstringbig{get;set;}
publicstringsmall{get;set;}
publicstringisSuccessfull{get;set;}
publicstringmessage{get;set;}
}
對於上傳和生成縮略圖,請自行完成,以下是ASP.NETMVC的例子。
publicclassHomeController:Controller
{
//
//GET:/Home/
publicActionResultIndex()
{
returnView();
}
///<summary>
///上傳圖片
///</summary>
///<returns></returns>
publicActionResultUploadImage()
{
//定義錯誤消息
JsonResultmsg=newJsonResult();
try
{
//接受上傳文件
HttpPostedFileBasepostFile=Request.Files["upImage"];
if(postFile!=null)
{
DateTimetime=DateTime.Now;
//獲取上傳目錄轉換為物理路徑
stringuploadPath=Server.MapPath("~/UploadFiles/"+time.Year+"/"+time.ToString("yyyyMMdd")+"/");
//文件名
stringfileName=time.ToString("yyyyMMddHHmmssfff");
//後綴名稱
stringfiletrype=System.IO.Path.GetExtension(postFile.FileName);
//獲取文件大小
longcontentLength=postFile.ContentLength;
//文件不能大於2M
if(contentLength<=1024*2048)
{
//如果不存在path目錄
if(!Directory.Exists(uploadPath))
{
//那麼就創建它
Directory.CreateDirectory(uploadPath);
}
//保存文件的物理路徑
stringsaveFile=uploadPath+fileName+"_big"+filetrype;
try
{
//保存文件
postFile.SaveAs(saveFile);
//保存縮略圖的物理路徑
stringsmall=uploadPath+fileName+"_small"+filetrype;
MakeThumbnail(saveFile,small,320,240,"W");
ReturnImageimage=newReturnImage();
image.big="/UploadFiles/"+time.Year+"/"+time.ToString("yyyyMMdd")+"/"+fileName+"_big"+filetrype;
image.small="/UploadFiles/"+time.Year+"/"+time.ToString("yyyyMMdd")+"/"+fileName+"_small"+filetrype;
msg=Json(image);
}
catch
{
msg=Json("上傳失敗");
}
}
else
{
msg=Json("文件大小超過限制要求");
}
}
else
{
msg=Json("請選擇文件");
}
}
catch(Exceptione)
{
;
}
msg.ContentType="text/html";
returnmsg;
}
///<summary>
由於回答超過最大限制,///生成縮略圖的代碼請向我索取
5. .net MVC中 在視圖中上傳的附件圖片怎麼保存到資料庫
如果沒有使用ef,其實跟傳統的asp.netweb程序應用一個道理呀。用sql抽取出來的數據,table,dataset等還可以使用linq
6. 如何在spring mvc中上傳圖片並顯示出來
(1)在spring mvc的配置文件中配置:
<beanid="multipartResolver"class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<propertyname="uploadTempDir"value="/tmp"/><!--臨時目錄-->
<propertyname="maxUploadSize"value="10485760"/><!--10M-->
</bean>
(2)文件上傳表單和結果展示頁fileupload.jsp:
<%@pagelanguage="java"contentType="text/html;charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglibprefix="mvc"uri="http://www.springframework.org/tags/form"%>
<%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<title>SpringMVC文件上傳</title>
</head>
<body>
<h2>圖片文件上傳</h2>
<mvc:formmodelAttribute="user"action="upload.html"
enctype="multipart/form-data">
<table>
<tr>
<td>用戶名:</td>
<td><mvc:inputpath="userName"/></td>
</tr>
<tr>
<td>選擇頭像:</td>
<td><inputtype="file"name="file"/></td>
</tr>
<tr>
<tdcolspan="2"><inputtype="submit"value="Submit"/></td>
</tr>
</table>
</mvc:form>
<br><br>
<c:iftest="${u!=null}">
<h2>上傳結果</h2>
<table>
<c:iftest="${u.userName!=null}">
<tr>
<td>用戶名:</td>
<td>${u.userName}</td>
</tr>
</c:if>
<c:iftest="${u.logoSrc!=null}">
<tr>
<td>頭像:</td>
<td><imgsrc="${u.logoSrc}"width="100px"height="100px"></td>
</tr>
</c:if>
</table>
</c:if>
</body>
</html>
(3)後台處理UploadController.java:
packagecn.zifangsky.controller;
importjava.io.File;
importjava.io.IOException;
importjavax.servlet.http.HttpServletRequest;
importorg.apache.commons.io.FileUtils;
importorg.springframework.stereotype.Controller;
importorg.springframework.web.bind.annotation.RequestMapping;
importorg.springframework.web.bind.annotation.RequestMethod;
importorg.springframework.web.bind.annotation.RequestParam;
importorg.springframework.web.multipart.MultipartFile;
importorg.springframework.web.servlet.ModelAndView;
importcn.zifangsky.model.User;
importcn.zifangsky.utils.StringUtile;
@Controller
publicclassUploadController{
@RequestMapping(value="/form")
publicModelAndViewform(){
ModelAndViewmodelAndView=newModelAndView("fileupload","user",newUser());
returnmodelAndView;
}
@RequestMapping(value="/upload",method=RequestMethod.POST)
publicModelAndViewupload(Useruser,@RequestParam("file")MultipartFiletmpFile,HttpServletRequestrequest){
ModelAndViewmodelAndView=newModelAndView("fileupload");
if(tmpFile!=null){
//獲取物理路徑
StringtargetDirectory=request.getSession().getServletContext().getRealPath("/uploads");
StringtmpFileName=tmpFile.getOriginalFilename();//上傳的文件名
intdot=tmpFileName.lastIndexOf('.');
Stringext="";//文件後綴名
if((dot>-1)&&(dot<(tmpFileName.length()-1))){
ext=tmpFileName.substring(dot+1);
}
//其他文件格式不處理
if("png".equalsIgnoreCase(ext)||"jpg".equalsIgnoreCase(ext)||"gif".equalsIgnoreCase(ext)){
//重命名上傳的文件名
StringtargetFileName=StringUtile.renameFileName(tmpFileName);
//保存的新文件
Filetarget=newFile(targetDirectory,targetFileName);
try{
//保存文件
FileUtils.InputStreamToFile(tmpFile.getInputStream(),target);
}catch(IOExceptione){
e.printStackTrace();
}
Useru=newUser();
u.setUserName(user.getUserName());
u.setLogoSrc(request.getContextPath()+"/uploads/"+targetFileName);
modelAndView.addObject("u",u);
}
returnmodelAndView;
}
returnmodelAndView;
}
}
在上面的upload方法中,為了接收上傳的文件,因此使用了一個MultipartFile類型的變數來接收上傳的臨時文件,同時為了給文件進行重命名,我調用了一個renameFileName方法,這個方法的具體內容如下:
/**
*文件重命名
*/
(StringfileName){
StringformatDate=newSimpleDateFormat("yyMMddHHmmss").format(newDate());//當前時間字元串
intrandom=newRandom().nextInt(10000);
Stringextension=fileName.substring(fileName.lastIndexOf("."));//文件後綴
returnformatDate+random+extension;
}
註:上面用到的model——User.java:
packagecn.zifangsky.model;
publicclassUser{
privateStringuserName;//用戶名
privateStringlogoSrc;//頭像地址
publicStringgetUserName(){
returnuserName;
}
publicvoidsetUserName(StringuserName){
this.userName=userName;
}
publicStringgetLogoSrc(){
returnlogoSrc;
}
publicvoidsetLogoSrc(StringlogoSrc){
this.logoSrc=logoSrc;
}
}
至此全部結束
效果如下:
(PS:純手打,望採納)
7. ASP.NET MVC中如何實現圖片上傳顯示進度條(百分比)
其實個人認為不管是Asp.NET MVC還是普通的Web程式,上傳現實進度條這個功能都是很大一部分人都在期待解決的問題。針對B/S模式的上傳,如果需要實時的了解到上傳的進度的話,這對伺服器(IIS)壓力是非常大的,當然針對這樣子的實現時有的,比如
NeatUpload等,這都是基於Asp.Net來開發的開源上傳組件,他們上傳時顯示的進度條都是實時,實現的方式是,在頁面中創建了一個iframe,定是的來刷新伺服器端上傳的進度,然後在客戶端顯示上傳進度。<個人不建議採用這樣子的方式,因為如果使用該方式的話,會對伺服器端資源消耗過大
8. asp.net mvc 如何不用form上傳文件
html與伺服器交互本質就是form提交,不用form伺服器不可能得到數據。
$.ajax()裡面構造form表單然後把file標簽append到form中post提交。注意上傳form的屬性類型要加multi....data(忘記名字了類似這個)
9. c#MVC 圖片上傳
請參考http://note.you.com/share/?id=&type=note
10. spring mvc 如何上傳很多圖片路徑保存在資料庫表的某個欄位裡面 幫幫我
文件上傳基本思路
1. 在一個 html 網頁中,寫一個如下的form :
<form method=post encType=multipart/form-data action='xx'>
<input name="userfile1" type="file" ><br>
<input name="userfile2" type="file"><br>
<input name="userfile3" type="file"><br>
<input name="userfile4" type="file"><br>
text field :<input type="text" name="text" value="text"><br>
<input type="submit" value=" 提交 "><input type=reset>
<form>
2. 服務端 servelet 的編寫
現在第三方的 http upload file 工具庫很多。Jarkata 項目本身就提供了fileupload 包http://jakarta.apache.org/commons/fileupload/
。文件上傳、表單項處理、效率問題基本上都考慮到了。在 struts 中就使用了這個包,不過是用 struts 的方式另行封裝了一次。這里我們直接使用 fileupload 包。至於struts 中的用法,請參閱 struts 相關文檔。
這個處理文件上傳的 servelet 主要代碼如下:
public void doPost( HttpServletRequest request, HttpServletResponse response ) {
DiskFileUpload diskFileUpload = new DiskFileUpload();
// 允許文件最大長度
diskFileUpload.setSizeMax( 100*1024*1024 );
// 設置內存緩沖大小
diskFileUpload.setSizeThreshold( 4096 );
// 設置臨時目錄
diskFileUpload.setRepositoryPath( "c:/tmp" );
List fileItems = diskFileUpload.parseRequest( request );
Iterator iter = fileItems.iterator();
for( ; iter.hasNext(); ) {
FileItem fileItem = (FileItem) iter.next();
if( fileItem.isFormField() ) {
// 當前是一個表單項
out.println( "form field : " + fileItem.getFieldName() + ", " + fileItem.getString() );
} else {
// 當前是一個上傳的文件
String fileName = fileItem.getName();
fileItem.write( new File("c:/uploads/"+fileName) );
}
}
}