cpost圖片上傳
Ⅰ c#里有上傳控制項么在哪怎麼調用
有。在工具箱里。不過貌似沒有可以直接上傳的控制項,需要代碼實現。
上傳一個或者多個文件
需要把form寫成這樣:
<form method="post" id="form1" onsubmit="/*postForm();return false;*/" action="Default.aspx" style="margin:0px;" runat="server" enctype="multipart/form-data">
選擇上傳圖片:
<br />
<span id="FileList"><input type="file" size="50" name="File" /></span>
<br />
<a href='#' onclick="addFile(10)" ><font color='blue'>增加更多圖片</font></a>(每次最多上傳10張圖片)
<br/>
<asp:Button ID="btnSave" runat="server" Text="開始上傳" height='30px' onclick="btnSave_Click"></asp:Button>
<input type="hidden" id="DelID" name="DelID" />
</form>
<script type="text/javascript" language="javascript">
function addFile(max)
{
var file = document.getElementsByName("File");
if (file.length < max) {
var filebutton = '<br /><input type="file" size="50" name="File" />';
document.getElementById('FileList').insertAdjacentHTML("beforeEnd", filebutton);
}
else {
alert('每次最多上傳' + max + '張圖片')
}
}
</script>
其中, document.getElementById('FileList').insertAdjacentHTML("beforeEnd", filebutton);
也可以寫成:
document.getElementById('FileList').innerHTML += filebutton
注意不能少enctype="multipart/form-data",否則後台取不到文件
後台:
int uploadcount = 0;
try
{
///獲取上載文件的列表
HttpFileCollection fileList = HttpContext.Current.Request.Files;
if (fileList == null) return;
///上載文件列表中的每一個文件
for (int i = 0; i < fileList.Count; i++)
{ ///獲取當前上載的文件
HttpPostedFile postedFile = fileList[i];
if (postedFile == null)
{
continue;
}
///獲取上載文件的文件名稱
String fileExt = (System.IO.Path.GetExtension(postedFile.FileName)).ToString().ToLower();
String strImageName = "pictures\\" + System.Guid.NewGuid().ToString();
if (string.IsNullOrEmpty(fileExt) == true)
{
continue;
}
//保存上傳圖片到伺服器
postedFile.SaveAs(Server.MapPath(strImageName + fileExt));
(new Picture()).UploadPicture("", strImageName + fileExt);
uploadcount++;
}
if (uploadcount>0)
{
Response.Redirect("UploadSucceed.aspx?succeed=true");
}
else
{
Response.Write("<script language=javascript>alert(\'系統提示:請選擇文件!\');</script>");
}
}
catch (Exception ex)
{
Response.Write("<script language=javascript>alert(\'系統警告:上傳圖片失敗!\');</script>");
}
如果就上傳一個文件,則file元素加上runat='server',也可以直接在後台訪問:
////獲取圖片文件擴展名
//String fileExt = (System.IO.Path.GetExtension(fileImage.PostedFile.FileName)).ToString().ToLower();
//String strImageName = "pictures\\" + System.Guid.NewGuid().ToString();
//try
//{
// if (fileImage.PostedFile.ContentLength != 0) //判斷選取對話框選取的文件長度是否為0
// {
// //保存上傳圖片到伺服器
// fileImage.PostedFile.SaveAs(Server.MapPath(strImageName + fileExt));
// (new Picture()).UploadPicture("", strImageName + fileExt);
// Response.Redirect("UploadSucceed.aspx?succeed=true");
// }
// else
// {
// Response.Write("<script language=javascript>alert(\'系統提示:請選擇文件!\');</script>");
// }
//}
//catch (Exception ex)
//{
// Response.Write("<script language=javascript>alert(\'系統警告:上傳圖片失敗!\');</script>");
//}
Ⅱ python requests 使用post方式上傳圖片
他那個文件是在當前目錄下, 所以不需要寫絕對路徑.
你只需要把第二行的files改成如下就好:
files={'file':open('/c/1/2.jpg','rb')}
Ⅲ C++ 以POST方式向網頁提交數據.有錯誤。。求大神解救就這點財富值了,見諒。圖片是錯誤。
只幫你解決崩潰的問題哈
就說兩個問題:
1、VS2005或以上的IDE默認是用UNICODE的,你代碼里混用ANSI和UNICODE,又做強制轉換,導致了一些參數出錯
2、OpenRequest接受兩種不同的參數的,既然你用的是HTTP_VERB_POST,為什麼要強制轉換成LPCTSTR呢,這樣會導致它調用的是另外一個函數(C++支持同名函數,不同參數)
boolPostHttpPage(conststd::wstring&hostName,
conststd::wstring&pathName,
conststd::wstring&postData)
{
usingnamespacestd;
CInternetSessionsession(_T("session"),0,INTERNET_OPEN_TYPE_PRECONFIG,NULL,
NULL,INTERNET_FLAG_DONT_CACHE);//設置不緩沖
INTERNET_PORTnPort=80;
DWORDdwRet=0;
CHttpConnection*pServer=session.GetHttpConnection(
(LPCTSTR)hostName.c_str(),nPort);
CHttpFile*pFile=pServer->OpenRequest(CHttpConnection::
HTTP_VERB_POST,(LPCTSTR)pathName.c_str());
CStringstrHeaders=L"Content-Type:application/x-www-form-urlencoded";//請求頭
//開始發送請求
pFile->SendRequest(strHeaders,(LPVOID)postData.c_str(),
postData.size());
pFile->QueryInfoStatusCode(dwRet);
if(dwRet==HTTP_STATUS_OK)
{
CStringresult,newline;
while(pFile->ReadString(newline))
{//循環讀取每行內容
result+=newline+L" ";
}
std::cout<<result<<std::endl;//顯示返回內容
}
else
{
returnfalse;
}
deletepFile;
deletepServer;
cout<<"成功"<<endl;
session.Close();
returntrue;
}
//調用時用下面的代替
PostHttpPage(L"localhost",L"welcome.php",L"name=rain&age=21");
Ⅳ 怎麼用C實現Http POST功能向Http伺服器上傳文件
用socket就行了。
和伺服器建立請求。
然後發送請求報文"\r\n\r\n"結束之後是數據。
post分為,application/x-www-form-urlencoded和multipart/form-data boundary=
要是上傳文件,就得使用multipart/form-data boundary=...
伺服器那邊根據boundary來解析出數據。
Ⅳ ASP如何實現批量上傳圖片,並在資料庫中有記錄
<%
dim conn
dim rs
dim rs2
set conn=server.createobject("adodb.connection")
conn.connectionstring="Provider = Microsoft.Jet.OLEDB.4.0;Data Source="&server.mapPath("db.mdb")
conn.open
formsize=request.totalbytes
if formsize<>0 then '這里只判斷了是否等於0,等於0就說明沒有傳過來數據。以後可以要多做點判斷,比如限制圖片大小的時候要判斷一下。
formdata=request.binaryread(formsize)
bncrlf=chrB(13)&chrB(10)
divider=leftB(formdata,clng(instrb(formdata,bncrlf))-1)
datastart=instrb(formdata,bncrlf&bncrlf)+4
dataend=instrb(datastart+1,formdata,divider)-datastart
mydata=midb(formdata,datastart,dataend)'這里也要檢測一下,就是檢測這個數據裡面是不是有病毒詞彙之類的,這個可以在網上查一下病毒裡面可能出現的詞語,如果有這些詞語,直接在這里就把這個mydata銷毀,然後response.redirect "xxx.asp",有病毒趕快跳轉,不要處理帶病毒的數據。
set rs=server.createobject("ADODB.recordset")
sql="select * from imgurl"
rs.open sql,conn,1,3
rs.addnew
rs("img").AppendChunk myData'把這個圖片的二進制數據新增到img欄位裡面。
tpm=replace(now(),"/","_") '用的日期做名字,日期裡面有"/"," ",":"之類的東西,這些東西全部替換成"_"。
tpm=replace(tpm,":","_")
tpm=replace(tpm," ","_")
rs("圖片名")=tpm
rs.update
Set MyStream=Server.CreateObject("Adodb.Stream")
MyStream.Type=1
MyStream.Open
MyStream.Write rs("img").getChunk(8000000)
MyStream.SaveToFile server.mappath("pic/"&tpm&".jpg")
MyStream.close
set MyStream=nothing
rs("img")="" '把access裡面的二進制圖片內容刪除,只保留圖片的名字。
rs.update
rs.close
set rs=nothing
response.write "<script>alert(""上傳成功"");location.href=""upload.asp"";</script>"
end if
%>
<form action="upload.asp" method="post" enctype="multipart/form-data">
<input type="file" name="imgurl">
<input type="submit" name="ok" value="上傳">
</form>
<!--------------下面是把圖片顯示出來------------------->
<div style="margin-top:2em;"><!--------------創建一個div把圖片顯示區域定位一下------------------->
<%
set rs2=server.createobject("ADODB.recordset")
sql2="select * from imgurl order by id desc"
rs2.open sql2,conn,1,1
for s=1 to rs2.recordcount
if not rs2.eof and not rs2.bof then
%>
<img src="pic/<%=rs2("圖片名")%>.jpg">
<%
else
exit for
end if
rs2.movenext
next
rs2.close
set rs2=nothing
%>
</div>
<%
conn.Close
Set conn = Nothing
%>
<!--至於刪除圖片,這個就很簡單了,圖片的名字都已經進access裡面了,直接讀一下access裡面的名字,讀了一個名字,然後用fso在pic文件夾裡面去刪除對應的圖片文件就可以了。--->
效果圖:網頁鏈接