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文件夹里面去删除对应的图片文件就可以了。--->
效果图:网页链接